文章目录
- 前言
- 一、Redis是什么?
- 二、Redis 对象简介
- 三、字符串对象操作
- 四、列表对象操作
- 五、哈希对象操作
- 六、集合对象操作
- 七、有序集合对象操作
- 八、对象共有操作
- 总结
前言
本文针对redis五种类型的对象操作进行了简单整理,如有不当之处,可交流讨论。
一、Redis是什么?
Redis全称为Remote DIctionary Server(Redis) ,是一个由Salvatore Sanfilippo写的key-value型的数据存储系统。简而言之,Redis是一个key-value类型的非关系型数据库管理软件,用户可以在官网下载安装:https://redis.io/。若仅仅是学习使用,也可在在线网站进行练习:https://try.redis.io/,本文全程在网站练习。
二、Redis 对象简介
Redis 系统包括五种对象:字符串对象、列表对象、哈希对象、集合对象和有序集合对象。Redis中的键(key)和值(value)都是用对象表示的,其中键都是用字符串对象表示,值可以是五种类型中的任意一种。需要注意的是,一般所说的字符串键、列表键指的是值的类型,并非是键的类型。针对值得类型不同,Redis可操作的命令也有不同,这些会在后续文章中陆续看到。
三、字符串对象操作
字符串对象是redis中最简单常用的对象,其常见操作命令如下:
代码语言:javascript复制set key value //字符串键赋值 如 set name wyl
get key //获取key对应的value
strlen key //获取key对应value的长度
mset key1 value1 key2 value2 //给多组键赋值
mget key1 key2 //获取多组键的值
字符串键的value也可以是整数,此时可以执行以下命令:
代码语言:javascript复制incr key //key对应的value数值加1
decr key //key对应的value数值减1
incrby key num //key对应的value数值加num
decrby key num //key对应的value数值减num
四、列表对象操作
列表键的value是一个列表对象,列表中有很多的元素,常见命令如下所示:
代码语言:javascript复制lpush key value1 value2 //在key对应的列表左边添加元素,如lpush student wyl sjx
rpush key value1 value2 //在key对应的列表右边添加元素
lpop key //移除key对应列表最左边的一个元素
rpop key //移除key对应列表最右边的一个元素
llen key //获取key对应列表元素个数
lrange key start stop //start stop是位置索引,获取[start,stop]范围内
//所有元素的值。如 lrange student 0 2 可以获取列表中的前三个元素。
//索引可以为负数,-1表示右边第一个元素,-2表示右边第二个
//lrange student 0 -1获取所有元素
lset key index value //设置指定索引处的元素值
lindex key index //返回索引位置的元素值
五、哈希对象操作
哈希对象又称为散列对象,特点是键的value是一个个哈希字段对(field-value),其常见操作命令如下:
代码语言:javascript复制hset key field value //哈希键单个赋值
//如 hset student name wyl;hset student age 25
hget key field //获取哈希键指定field的value,如 hget student name
hmset key field1 value1 field2 value2//哈希键批量赋值
//如 hmset student name wyl age 25
hmget key field1 field2//批量获取哈希键指定field的值,
//hmget student name age
hgetall key //获取哈希键所有字段名及值
hkeys key //获取哈希键所有字段名
hvals key //获取哈希键所有字段值
hexists key field //判断指定字段是否存在
hlen key //获取哈希键字段数目
六、集合对象操作
集合类型的value为元素的集合,每个元素都有唯一性,其常见操作命令如下:
代码语言:javascript复制sadd key member1 member2 //向集合添加元素如 sadd names wyl sjx 自动去重
srem key member1 member2 //向集合移除元素如 sadd names sjx
smembers key //获取集合所有的元素
sismember key member //判断集合是否包含某个元素
sdiff/sinter/sunion key1 key2 //获取集合的差集/交集/并集结果
spop key //弹出集合中的一个元素,集合中元素是无序的,所以是随机弹出一个
七、有序集合对象操作
有序集合和集合类似,value是元素的集合并且元素均唯一。不同之处是有序集合中每个元素都会关联一个double类型的分值,有序集合中的元素是按照分值升序排序的。其常见操作命令如下:
代码语言:javascript复制zadd key score1 member1 score2 member2 //向有序集合添加元素,member存在时
//更新分值,如zadd grade 100 sjx 99 wyl
zscore key member //获取指定元素分值
zincrby key increment member //增加指定元素分值如zadd grade -3 wyl
zrange key start stop //获取指定索引区间的元素(从小到大)类似lrange
zrevrange key start stop //获取指定索引区间的元素(从大到小)
zrangebyscore key min max //获取指定分值范围[min,max]的元素(从小到大)
zrecrangebyscore key min max //获取指定分值范围[min,max]的元素(从大到小)
八、对象共有操作
所有redis键均可以用的一些命令如下所示:
代码语言:javascript复制keys * //列出所有的key
exists key //检查某个key是否存在,存在返回1不存在返回0
del key //删除某个key
type key //获取key对应的value的类型
总结
本文对redis中几种常见的键类型做了简要介绍,并对每种类型的键的常见命令做了简要介绍。当然,redis中的命令复杂多样,这只是入门的冰山一角,其余命令就需要大家去探索了。学习了这些以后,你是否好奇redis源码中是如何实现这些不同的键类型及命令的呢?接下来的几节我会参考redis源码和《redis设计与实现》进行简要介绍,希望能帮助到您。我是小白,大家一起沟通交流进步~