Redis 常用数据类型
1.字符串(String)
127.0.0.1:6379> set k1 100OK
127.0.0.1:6379> get k1
"100"
append 将给定的追加到原值末尾
127.0.0.1:6379> set k4 v456
OK
127.0.0.1:6379> append k4 1
(integer) 5
127.0.0.1:6379> get k4
"v4561"
strlen <key>获得值的长度
setnx <key> <value> 只有在key 不存在时设置key的值
incr <key> 将key中存储的的数字加1,只能对数字值操作
decr <key> 将key中存储的的数字减1
incrby/decrby <key> <步长> 将key中存储的数字值增减。自定义步长
mset <key1> <value1> <key2> <value2> <key3> <value3>... 同时设置一个或多个key-value
mget <key1> <key2> ... 同时获取一个或多个value
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
msetnx <key1> <value1> <key2> <value2> <key3> <value3>... 同时设置一个或多个key-value,当且仅当给定的key都不存在
getrange <key><起始位置><结束位置> 获取值的范围
127.0.0.1:6379> set name lucymary
OK
127.0.0.1:6379> getrange name 0 3
"lucy"
127.0.0.1:6379>
setex <过期时间> 设置键值的同时,设置过期时间,单位秒
127.0.0.1:6379> setex age 30 v111
OK
127.0.0.1:6379> ttl age
(integer) 20
2.列表(List)
redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部右边。它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能较差。
lpush/rpush ....key><value1><value2><value3>.....
从左边/右边插入一个或多个值。
127.0.0.1:6379> lpush k1 v1 v2 v3
(integer) 3
127.0.0.1:6379> lrange k1 0 -1
1) "v3"
2) "v2"
3) "v1"
lpop/rpop <key>
从左边/右边吐出一个值。值在键在,值光键亡。
127.0.0.1:6379> lpop k1
"v3"
127.0.0.1:6379> rpop k1
"v1"
rpoplpush <key1><key2>
从列表右边吐出一个值,插到key2列表左边
127.0.0.1:6379> lpush k1 v1 v2 v3
(integer) 3
127.0.0.1:6379> rpush k2 v11 v12 v13
(integer) 3
127.0.0.1:6379> rpoplpush k1 k2
"v1"
127.0.0.1:6379> lrange k2 0 -1
1) "v1"
2) "v11"
3) "v12"
4) "v13"
lrange <key><start><stop>
按照索引下标 获取列表指定范围内的元素(从左到右)
lindex <key><index>
通过索引获取列表中的元素 llen
获取列表的长度 linsert <key> before/after <value> <newvalue>
在 的前面/后面插入插入值
127.0.0.1:6379> linsert k2 before v11 v110
(integer) 5
127.0.0.1:6379> lrange k2 0 -1
1) "v1"
2) "v110"
3) "v11"
4) "v12"
5) "v13"
127.0.0.1:6379>
127.0.0.1:6379> linsert k2 after v11 v111
(integer) 6
127.0.0.1:6379> lrange k2 0 -1
1) "v1"
2) "v110"
3) "v11"
4) "v111"
5) "v12"
6) "v13"
127.0.0.1:6379>
lrem <key><n><value>
从左边删除n个value lset <key><index><value>
将列表key下标为index的值替换为value
3.集合(Set)
sadd <key> <value1> <value2>......
向集合添加一个或多个成员
https://www.runoob.com/redis/redis-sets.html
4.哈希(Hash)
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。类似java中的Map
https://www.runoob.com/redis/redis-hashes.html
5.有序集合
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。