在了解到redis的介绍后,就开始争对于五种常用的数据结构进行操作以及各种数据结构的适用情况。
首先要知道两个细节,以方便我们对十种数据结构的学习:1,redis命令不区分大小写,但key区分大小写(K1 和 k1是不同的KEY)。2,当忘记命令时,可以使用 help @命令 查询,或者进入官方中文命令大全网址。
1.String(字符串)
set key value:
set key value [NX|XX] [GET] [EX seconds|PX milliseconds
|EXAT unix-time-seconds|PXAT unit-time-milliseconds|KEEPTTL]
SET命令有EX, PX, NX, XX以及KEEPTTL五个可选参数。
*EX seconds: 以秒为单位设置过期时间。
*PX milliseconds: 以毫秒为单位设置过期时间。
*EXAT timestamp: 设置以秒为单位的UNIX时间戳对应的时间为过期时间。
*PXAT milliseconds-timestamp: 设置以毫秒为单位的UNIX时间戳对应的时间为过期时间。
*NX: 键不存在的时候设置键
*XX: 键存在的时候设置键
*GET: 返回指定键原本的值,若键不存在返回nil。
*KEEPTTL: 保留设置前的生存时间。
get key:
获得某一个key的值。
mset k1 v1 k2 v2 :
批量插入数据,对应的k1 v1
mget k1 k2 k3:
批量获得多个key的值。
msetNX k1 v1 k2 v2:
键不存在的时候插入,这是一个原子操作,假如有一个操作失败,会回滚到开始前。
getrange key start end:
获取key某个区间的值,start表示开始 end:表示结束。0 -1:表示全部。
setrange k1 start xxxx
从start开始修改xxxx,对k1。
incr k1:
对key进行自增1,对数据有效 后面可添加参数表示增多少
decr k1:
对key进行自减1,对数据有效 后面可添加参数表示减多少
strlen k1:
获取k1的字符串长度。
append k1 xxxx:
对k1进行增加xxxx.
setEX k1 time v1:
存入值为v1的k1并设置存活时间为time。
getset k1 v2:
先把k1的旧值v1 放回在设置为v2。
2.List(集合)
list是单key多value,也就是:key: [v1,v2,v3]。底层是一个双端链表的结构,容量大概是2的32次方个元素,大概40多亿,主要功能有push/pop等,一般用在栈,队列,消息队列等。left和right都可以进行添加。
lpush/rpush/lrange:
lpush key v1 v2 v3:从左边依次插入v1,v2,v3到队列key。
rpush key v1 v2 v3:从右边依次插入v1,v2,v3到队列key。
lrange key 0 -1:从左边依次遍历key所有的值。
lpop/rpop
lpop key [count] : 从左边弹出count个元素。
rpop key [count] : 从右边弹出count个元素。
lindex key index:集合按照下标取值。
llen key: 获取集合元素个数。
lrem key N v1: 删除N个值为v1的元素。
lset key index v1:修改索引为index的值为v1。
3.Hash(哈希)
hash存储的是一个键值对,但这个键值对不是redis的key与value,而是redis中的value是一个键值对,也就是<key ,map<key,value>>,即存储的是一个map的键值对数据。
常用命令:
hset key field value [filed value] :向key存入一个map<field, value>的值。
hget key field : 获取key中为字段field的值。
hmset key field value [field value]: 和第一个命令一样,批量存入数据。
hmget key field [field]: 获取多个key中字段为field的值。
hgetall key: 对key进行遍历。
hdel key field: 删除key中某个field的值。
hlen key: 获取key中的field的数量。
hexists key field: 判断key中是否有field这个字段。
hkeys/hvals key: 罗列出key中的key/value。
hsetnx key field value: 不存在才进行存储,存在则无效。
4.Set(set集合)
set与list一样,是单值多value,但不同的是,list允许有重复的值,set不允许。
命令:
sadd key member [member]: 添加元素。
smembers key: 遍历集合key中所有元素。
sismenber key value: 判断value是不是key中的元素。
srem key value: 删除集合key中的value元素。
scard key: 统计集合key中有几个元素。
srandmember key 数字: 从集合key中随机展示n个元素,不删除。
spop key n: 随机弹出n个元素,弹出即删除。
Set集合中重点:集合运算。全集,交集,差集,并集。
这里有两个集合 set1 = {a,b,c,1,2}, set2 = {1,2,3,a,x}。
差集运算A-B: 属于A但不属于B的元素集合。
sdiff set1 set2: 求A-B = {b, c}。
并集运算AUB: 属于A或者属于B的元素的合集。
sunion set1 set2: AUB = {a,b,c,x,1,2,3}。
交集运算AnB: 属于A与B的公共集合。
sinter set1 seet2: AnB = {a,1,2}。
5.Zset(sort set)
zset: 在set集合基础上,每个value值前面加一个score的分数值。之前是key1 v1 v2 v3,现在是key score1 v1 score2 v2。
命令:
zadd key score member [score member]: 添加元素,分数在value前面。
zrange key start stop [withscore]: 0~-1表示遍历全部,按照元素分数从小到大放回start到stop之间所有元素。withscore表示放回携带分数。
zrevrange key start stop [wihscore]: 与上面一样,只不过是按从大到小顺序。
zscore key value: 获取value中的分数。
zcard key: 获取集合元素的数量。
zrem key member: 删除元素。
zincrby key increment member: 增加member的分数。
zcount key min max: 获得指定分数内元素的个数。