Redis的数据结构
- 字符串(String)
- 哈希(hash)
- 字符串列表(list)
- 字符串集合(set)
- 有序字符串集合(sorted set)
Key定义的注意点
- 不易过长\过短
- 统一命名规范
存储String
- 二进制安全,存入和获取的数据相同
- Value最多可以容纳的数据长度时512M
常用命令
- 赋值 set key value
- 取值 get key
- 删除 del key
- 数值增减
1:incr key
默认自增长1,若key不存在,则创建key,默认为0,自增长1,结果为1,若key不能进行数值运算则会抛出错误信息
2:decr key
默认自减1,若key不存在,则创建key,默认为0,自减1,结果为-1,若key不能进行数值运算则会抛出错误信息
- 扩展
1:incrby key num
每次key按照num增长,key不存在,则创建key,默认为0,增加num
2:decrby key num
每次key按照num减少,key不存在,则创建key,默认为0,减少num
3:append key str
拼接:key不存在,则创建key,默认为str
4: mget key1 key2 ...
批量获取多个key的值,如果可以不存在则返回nil
5: setnx key value
设置key对应的值为String类型的value,如果key已经存在则返回0
6: setex key seconds value
设置key对应的值为String类型的value,并设定有效期(单位秒)
存储Hash
- String Key和String Value的map容器
- 每一个Hash可以存储4294967295个键值对
常用命令
- 赋值
1:hset key k1 v1
2:hmset key k1 v1 k2 v2
- 取值
1:hget key k1
2:hmget key k1 k2
3:hgetall key 获取所有k和v
4:hkeys key 获取所有k
5:hvals key 获取所有v
6:hlen key 获取map中键值对的个数
- 删除
1:del key 删除整个map
2:hdel key k 删除map中的k
- 增加
1:hincrby key k num
- 扩展
1:hexists key k 判断k是否存在
存在:1 不存在:0
存储list
- ArrayList使用数组方式
- LinkedList使用双向链接方式
- 双向链表中增加数据
- 双向链表中删除数据
常用命令
- 两端添加
1:lpush
2:rpush
3:lpushx
4:rpushx
- 查看列表
1: lrange
- 删除
1:del
- 两端弹出
1:lpop
2:rpop
- 获取列表元素个数
1:llen
- 扩展
1:lrem key c v
c 为正:从左删除c个值为v
c 为负:从右删除c个值为v
c 为0:删除全部的v
2:lset 指定位置插入值
3:linsert before
4:linsert after
5:rpoplpush 右弹出,左添加
存储Set(跟踪一些唯一性的数据)
- 和List类型不同,Set集合中不允许出现重复的元素
- Set可包含的最大元素个数是4294967295
常用命令
- 添加元素
1:sadd 返回值为0,说明集合中已经存在该元素
- 删除元素
1:sdel
- 获得集合中的元素
1:smembers
- 集合中的差集运算
1:sdiff 结果来自第一个集合
2:sdiffstore 差集存储到另外一个集合中
- 集合中的交集运算
1:sinter
2:sinterstore 交集存储到另外一个集合
- 集合中的并集运算
1:sunion
2:sunionstore 并集存储到另外一个集合
- 扩展
1:scard 集合中元素的个数
2:srandmember 随机选中一个元素
存储Sorted-Set
- Sorted-Set中的成员在集合中的位置是有序的
- 每个key都有一个分数
常用命令
- 添加元素
1:zadd key s1 k2 s2 k2 ...
- 获得元素
1:zrange key 查看所有k
2:zrange key n1 n2 withscores 查看集合中所有的key和对应的分数(从小到大)
3:zrevrange key n1 n2 withscores 查看集合中所有的key和对应的分数(从大到小)
4:zscore key k 查看k的分数
- 删除元素
1:zrem
- 范围查询
- 扩展
1:zcard 获取集合元素个数
2:zremrangebyrank key n1 n2 删除n1~n2范围内元素
3:zremrangebyscore key n1 n2 删除分数在n1~n2范围元素
4:zrangebyscore key n1 n2 [withscores] [limit n3 n4]查看分数在n1~n2范围内元素
withscores:是否查看分数
limit n3 n4:限制条件,n表示位数,取出n3到n4内的元素,包右不包左
5:zincrby key n k k的分数加上n
6:zcount key n1 n2 分数在n1~n2内元素的个数,包括n1和n2
Key的相关操作
常用命令
1:keys * 查看所有key
2:keys n? 模糊匹配key
3:exists key 判断key是否存在
4:rename oldkey newkey 修改key的名称
5:expire key m 设置key的有效 (m以秒为单位)
6:ttl key 当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间
7:type key 查看key的数据结构类型
8:del key 删除key