1.String是最常用的一种数据类型,普通的key/value存储都可以归为此类。
- set:设置key对应的值为String类型的value
- get:获取key对应的值
aliyun_li:0>set key value
"OK"
aliyun_li:0>get key
"value"
- mget:批量获取多个key的值,如果可以不存在则返回null
aliyun_li:0>mget key key1 key2
1) "value"
2) "value1"
3) null
- incr:对key对应的值进行加加操作,并返回新的值
- incrby:加指定值
aliyun_li:0>set keynum 1
"OK"
aliyun_li:0>incr keynum
"2"
aliyun_li:0>incrby keynum 2
"4"
- decr:对key对应的值进行减减操作,并返回新的值
- decrby:减指定值
aliyun_li:0>decr keynum
"3"
aliyun_li:0>decrby keynum 3
"0"
- setnx:设置key对应的值为String类型的value,如果key已经存在则返回0
- setex:设置key对应的值为String类型的value,并设定有效期
aliyun_li:0>setnx key value
"0"
aliyun_li:0>setnx keyNotExists value
"1"
aliyun_li:0>setex keyNotExists1 10 value
"OK"
aliyun_li:0>ttl keyNotExists1
"-2"
- getrange:获取key对应value的子字符串
aliyun_li:0>set key 1234567890
"OK"
aliyun_li:0>getrange key 0 1
"12"
- mset:批量设置多个key的值,如果成功表示所有值都被设置,否则返回0表示没有任何值被设置
aliyun_li:0>mset key1 value key2 value2
"OK"
- msetnx:同mset,不存在就设置,不会覆盖已有的key
aliyun_li:0>msetnx key1 value1 key2 value2 key3 value3
"0"
aliyun_li:0>mset key4 v4 key5 v5
"OK"
aliyun_li:0>mset key5 v5 key6 v6
"OK"
- getset :设置key的值,并返回key旧的值
aliyun_li:0>getset key5 newv5
"v5"
aliyun_li:0>get key5
"newv5"
- append:给指定key的value追加字符串,并返回新字符串的长度
aliyun_li:0>get key
"v"
aliyun_li:0>append key a
"2"
aliyun_li:0>get key
"va"
2.Hash
Hash是一个String类型的field和value之间的映射表。
redis的Hash数据类型的key(hash表名称)对应的value实际的内部存储结构为一个HashMap。
Hash特别适合存储对象。
所存储的成员较少时数据存储为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。
- hset:设置key对应的HashMap中的field的value
- hget:获取key对应的HashMap中的field的value
- hgetall:获取key对应的HashMap中的所有field的value
- hlen:返回key对应的HashMap中的field的数量
aliyun_li:0>hset k f1 "v1"
"1"
aliyun_li:0>hset k f2 "v2"
"1"
aliyun_li:0>hget k f1
"v1"
aliyun_li:0>hgetall k
1) "f1"
2) "v1"
3) "f2"
4) "v2"
aliyun_li:0>hlen k
"2"
3.List
lpush:将一个或多个值插入到列表头部
lrange:获取key对应的list的指定下标范围的元素,-1表示获取所有元素
lpop:移出并获取列表的第一个元素,并返回该元素
rpush:在key对应的list的尾部添加一个元素
rpop:从key对应的list的尾部删除一个元素,并返回该元素
aliyun_li:0>lpush lk v1 v2 v3 v4 v5
"5"
aliyun_li:0>lrange lk 0 -1
1) "v5"
2) "v4"
3) "v3"
4) "v2"
5) "v1"
aliyun_li:0>lpop lk
"v5"
aliyun_li:0>rpush lk v6
"5"
aliyun_li:0>lrange lk 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
5) "v6"
aliyun_li:0>rpop lk
"v6"
4.Set
sadd:在key对应的set中添加一个元素
smembers:获取key对应的set的所有元素
spop:随机返回并删除key对应的set中的一个元素
suion:求给定key对应的set并集
sinter:求给定key对应的set交集
aliyun_li:0>sadd sk v1 v2 v3 v4 v5
"5"
aliyun_li:0>smembers sk
1) "v2"
2) "v1"
3) "v4"
4) "v3"
5) "v5"
aliyun_li:0>spop sk
"v2"
aliyun_li:0>smembers sk
1) "v4"
2) "v3"
3) "v1"
4) "v5"
aliyun_li:0>smembers sk1
1) "v6"
2) "v1"
aliyun_li:0>sunion sk sk1
1) "v3"
2) "v4"
3) "v6"
4) "v1"
5) "v5"
aliyun_li:0>sinter sk sk1
1) "v1"
5.SortSet
zadd :在key对应的zset中添加一个元素
zrange:获取key对应的zset中指定范围的元素,-1表示获取所有元素
zrem:删除key对应的zset中的一个元素
zrangebyscore:返回有序集key中,指定分数范围的元素列表,排行榜中运用
zrank:返回有序集合中指定成员的索引
set是通过hashmap存储,key对应set的元素,value是空对象
sortset是hashmap存储,还加了一层跳跃表
跳跃表:相当于双向链表,在其基础上添加前往比当前元素大的跳转链接
aliyun_li:0>zadd zk 1 v1 2 v2 3 v3 4 v4 5 v5
"5"
aliyun_li:0>zrange zk 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
aliyun_li:0>zrem zk v3
"1"
aliyun_li:0>zrange zk 0 -1
1) "v1"
2) "v2"
3) "v4"
4) "v5"
aliyun_li:0>zrangebyscore zk 1 3
1) "v1"
2) "v2"
aliyun_li:0>zrank zk v2
"1"
aliyun_li:0>zrange zk 0 -1
1) "v1"
2) "v2"
3) "v4"
4) "v5"
6.文章参考链接
a.https://blog.csdn.net/qq_32617703/article/details/103545990
b.https://www.runoob.com/redis/strings-mset.html