redis 五大数据类型
阅读原文时间:2023年07月09日阅读:1

一、String

set : 添加数据
get : 获得指定 key 的 value
del : 删除指定 key
append : 往字符串后面添加
      append k1 12345
      --> v112345

strlen : 获取字符串长度

incr key: 自加 1
decr key: 自减 1
incrby 3 key:自加3

decrby 3 key:自减3

getrange k1 0 3 :获得value 0~3 的长度的字符串

setrange k1 0 abc:将value 前三个替换为 abc(从 0 开始的 abc)

setex:(set with expire)添加数据并设置过期时间
      -->setex k1 10 abc(设置k1 为 abc 并10 秒过期)
setnx:(set if not exist)如果不存在的话,就设置
============= ======================================
mset  :(more set)  设置多个 set k1 v1 k2 v2
mget  :(more get)  获得多个 get k1 k2
msetnx :(more set if not exists) 如果不存在 同时设置多个,要么全部成功,要么全部失败

二、hash ( value 是一个键值对,和 hashmap 差不多 )

hset user name jack
hget user name
hmset user id 1 name jack : 同时设置多个
hmget user id name : 同时获得多个
hkeys user :获得所有的 key
hvals user : 获得所有的 value
hgetall user : 以键值对的形式获得所有
hlen user:获得长度,一个键值对长度为1 
hexists user name : 判断 是否有name
hincrby user age 2 : 年龄 加 2
hincrbyfloat user score 0.2 : 分数加0.5(小数)
hsetnx user name jack : 若果没有 name 这个属性,才加进去
hdel user id:删除 id

三、list 链表 ( 是一个双向链表结构,可以双向操作 )

LPUSH list 1 2 3 4 5 : 依次向链表左边插入
RPUSH list 1 2 3 4 5 : 依次向链表右边插入

LRANGE list 0 -1     : 从左往右( 0 -1 读取全部)

LPOP : 移除最左边一个,并返回

RPOP : 移出最右边一个,并返回

LINDEX  list1 3: 读取 list1 的第 3 个索引位
LLEN list1 : 查看 list1 长度
LREM list1 2 3 : 删除 list1 的 2 个 3 (删除 N 个 value) 
LTRIM list1 0 4 : 截取 list1 的 0 到 4 ,并重新赋值给 list1
RPOPLPUSH list1 list2 : 对 list1 rpop操作返回的结果,对list2 lpush 操作
LSET key index value : 修改指定 index 上的value
LINSERT key before/after v1 v2 : 在 v1 前/后 添加 v2

四、Set( 不重复 )

sadd set1 1 1 2 2 33 : 添加,会自动去掉重复的数据
smembers set1: 查看 set 1 中的所有元素

sismember set1 a : 判断 a 是否是set1 的成员

scard set1 : 获取 set 1 中元素的个数
srem key value : 删除指定的 value
srandmember set1  3 : 在set1 中随机找3个
spop set1 : 随机出栈

smove set1 set 2 a : 将 set1 中的 a 移到 set2 (set1 中就没有a 了)

sdiff  set1 set2 : 差集 set1 在 set2 中不存在的元素
sinter set1 set2 : 交集 set1 和 set2 同时存在的元素
sunion set1 set2 : 病集 set1 和 set2 所有元素

五、Zset ( sorted set )

在 set 的基础上 加了一个 score 值
之前 set 是 k1 v1  v2 v3
现在 zset 是 k1 score1 v1 score2 v2 score3 v3 

zadd zset1 60 v1 70 v2 80 v3
zrange zset1 0 -1 : 获得所有的 value

zrange zset1 0 -1 withscores : 获得所有的 value 和 score

zrangebyscore zset1 60 90 : 截取 60 到 90 分的(左闭右闭)
zrangebyscore zset1 (60 (90 : 截取 60 到 90 分的(左开右开)
zrangebyscore zset1 60 90 limit 3 3 : 截取 60 到 90 分的,
      从下标3 开始截取3 个长度

zrem zet1 v5 : 删除 zset 中的 v5

zcard zset01 : 获得个数(score 和 value 是一体的)
zcount zset01 60 90 : 获得 60 分 到 90 分的个数
zrank zset01 v4 :获得 v4 的下标 

zscore zset01 v4 : 获得 v4 对应的 score

zrevrank zset01 v4 : 逆序获得下角标
zrevrange zset01 v4 : 逆序显示
zrevrangebyscore zset01 90 60 : 结束分数到开始分数 逆序