redis五大数据类型
redis五大数据类型
字符串
哈希
列表
集合
有序集合
键操作
# 1.set 键名 值(覆盖)
set k1 v1
# 2.EXISTS 键名
EXISTS k1
# 3.查所有keys值
keys *
# 4.move 键值 库编号,当前库对应键值会消失
move k1 2
# 5.ttl 键值,查看键存活时间(永久为-1,过期或不存在-2)
# 6.get 键值
# 7.EXPIRE 键值 存活时间
# 8.type 键值 查看键类型
# 9.del 键值
字符串
# append 键 值 ,追加字符串
append k1 12345
# STRLEN 键 获取字符串长度
#incr、decr、incrby、decrby一定要是数字才能加减
incr k1
decr k1
incrby k1 3
decrby k1 3
# getrange k1 0 -1 (获取全部)
# getrange k1 0 3 (获取0-3位左闭右开)
# setrange k1 0 xxx (第0位开始覆盖)
# setex 键值 存活时间 value (set with expires)
# setnx 键值 value (set if not exist)如果存在不执行
# mset k1 v1 k2 v2 k3 v3 (一次设置多对值)
# msetnx k1 v1 k2 v2 k3 v3 (如果有一个存在,全部插入失败)
# mget k1 k2 k3 (一次获取多个值)
列表
是一个字符串链表,left、right都可以插入添加
-
如果键不存在,创建新的链表
-
如果键已存在,新增内容
-
如果值全部移除,对应的键也就消失了
链表的数据结构导致了对头、尾的操作效率极高,但对中间元素效率O(n)。
# lpush list01 1 2 3 4 5 (左插)
# lrange list01 0 -1
# rpush list02 1 2 3 4 5 (右插)
# lpop list01
# rpop list02
# lindex list01 3 按照索引从上到下获得元素
# llen list01 获取列表长度
# lrem list01 删n个value
lrem list01 n m # 移除列表中n 个 m
# ltrim list01 0 4 (将list01的0到4包含4的索引取出,并赋值给list01)
# rpoplpush 源数组 目标数组
rpoplpush list01 list02
# lset key index value (索引为index设置为value)
# linsert key before/after 值1 值2(在值1前插入值2)
集合
# sadd set01 1 1 2 2 3 3 添加(自动过滤重复元素)
# scard set01 获取元素个数
# srem key value 删除集合中的元素
# srandmember key n 随机出n个元素
# spop key 随机出栈
# smembers set01 查看set01中的所有元素
# smove key1 key2 (将key1中的某个值移到key2中)
# 数学集合运算
# sdiff key1 key2 (取key1和key2的差集,在key1中但不在key2中)
# sinter key1 key2 (取key1和key2的交集,在key1且在key2中)
# sunion key1 key2 (取key1和key2的并集)
哈希
KV模式不变,但V是一个键值对。
# hset user id 01 (键为user,值是id-01的键值对)
hset user id 01 name yyh age 18
# hget user id
hget user id name age
hgetall user
# hdel user id (将user中的id删除)
# hexists user id (判断user中是否有id)
# hkeys user (获取user中的所有key)
# hvals user (获取user中的所有value)
# hincrby user age 2 (user的age增加2)
# hincrby user score 0.5 (将user的score增加0.5)
# hsetnx user age 25 (如果user不存在age则增加)
排序集合(sorted set)
# zadd zset01 60 v1 70 v2 80 v3 (60-v1,70-v2,80-v3)构成键值对,可以按键排序
# zrange zset 0 -1 (获取集合内所有元素)
# zrange zset 0 -1 withscores
# zrangebyscore key 开始score 结束score
zrangebyscore 60 90 (60<=score<=90)
zrangebyscore 60 (90 (60<=score<90)
zrangebyscore (60 (90 (60<score<90)
zrangebyscore 60 90 limit startindex nums (先取出60-90的,再获取startindex开始nums个元素)
# zrem zset01 v5 (移除v5这个元素)
# zcard (获取元素个数)
# zcount zset01 60 90 (返回score在60-90之间的元素个数)
# zrank zset01 v4 (获取v4在zset01中的索引)
# zcore zset01 v4 (获取v4对应的score值)
# zrevrank zset01 v4 (获取v4的逆序坐标值)
# zrevrange zset01 0 -1 (逆序获取zset01的元素)
# zrevrangebyscore zset01 90 60 (根据分数逆序)