redis 数据类型和命令

通用命令

命令 作用 使用 描述
type key 查看 key 的类型 type mykey
del key 删除 key del mykey 同步删除
unlink key 删除 key unlink mykey 异步删除
expire key 设置 key 的过期时间 expire mykey 10 设置 mykey 10 秒后过期
ttl key 查看 key 还有多久过期 ttl mykey -1,永不过期
select index 选择数据库分片 select 0 共有 16 个,默认选择的是 0
flushdb 清空当前库
flushall 清空所有库

String

存储字符串、整数、小数

命令 作用 使用 描述
get key 获取 key 值 get mykey
set key value 添加 key set mykey val 如果 key 不存在就添加;存在就覆盖
setnx key value 添加 key (不存在时才添加) setnx mykey val2 简易锁
setex key 过期时间 value 添加 key 同时设置过期时间 setex mykey 5 val3
incr key key 的值 +1 incr mykey 值必须是数字型,不然报错
decr key key 的值 -1
incrby key step key 的值 + step incrby mykey 4 mykey的值+4,值必须是数字

List

存储 String 类型的集合。每个元素是 quickList, quickList 里面才放真正的 String 数据,quickList 可以理解为数组(是一块连续的内存)

当值比较少的时候,申请一小块内存(一个 quickList)来存放数据;如果值比较多的时候,就会多申请几块内存(多个 quickList),每quickList 组成双向链表

命令 作用 使用 描述
lpush key v1 mykey 左边插入 v1 v2;key 不存在就创建 lpush mykey v1 v2 注意顺序
rpush key v1 同上,右边插入
lpop key 弹出最左边的值,并返回 lpop mykey 弹出就是删除的意思
rpop key 同上,弹出右边
lrange key start end 从左至右获得指定下标范围的元素 lrange mykey 0 4 不会删除,只是获取;
如果取全部就 lrange key 0 -1
lindex key index 获取指定下标位置的元素 lindex mykey 2

Set

无序可重复的 String 集合,底层数据结构是 hash 表,所以时间复杂度是 O(1),原理类似 java hashSet

命令 作用 使用 描述
sadd key v1 key 添加一个元素;key 不存在就创建 sadd mykey v1
smembers key 获取 set 所有值 smembers mykey
sismember key value 判断 set 中是否有有某个值 sismember mykey v1 1:存在;0:不存在
scard key 总元素个数
smove k1 k2 value 把 k1 中的 value 移动到 k2 中
sinter k1 k2 取交集
sunion k1 k2 取并集
sdiff k1 k2 取差集 k1 中存在,k2 中不存在

Hash

存储对象

命令 作用 使用 描述
hset key field value 给对象的属性赋值;没有就创建 hset user:101 id 1001 给 user:101 这个 hash 设置 id=1001
hget key field 取值 hget user:101 id
hkeys key 对象所有键 hkeys user:101
hvals key 对象所有值 hvals user:101
hexistxs key field 是否有指定属性 hexistxs user:101 id
hsetex key field valye 对象中不存在某个属性才添加属性并复制 hsetex user:101 name zhangsan 如果 user:101 没有 name 设置 name 的值

Zset

也是一个不重复的集合(元素不重复,分数可以重复)

两种数据结构实现,压缩列表(Zip list)和跳表(Skip list),和 java HashMap 类似元素个数达到合适条件使用不同的数据结构

当元素数量 <= 128,并且每个元素字节大小 <= 64 使用压缩列表

命令 作用 使用 描述
zadd key score1 member1 给集合添加元素;可以多个 zadd tv_rank 100 海信 99 索尼 添加两个元素;海信和索尼
海信分数:100;索尼分数:99
zcard key 集合中的元素个数 zcard tv_rank
zcount key min max 集合中指定分数分范围内的元素个数 zcount tv_rank 10 80 分数是[10-80]之间的元素个数
zincrby key step e 给元素增加指定分数 zincrby tv_rank 15 索尼 给索尼增加15分
zrange key start end [withscores] 按照下标获取元素;分数从小到大排列之后的顺序 zrange tv_rank 0 -1 获取全部元素,没有分数
zrangebyscore key min max [withscores] 集合中指定分数范围内的元素,按照分数从小到大排序 zrangebyscore tv_rank 10 100 withscores 获取10-100内的元素,带分数
zrevrangebyscore key max min [withscores] 同上,按照分数从大到小排序
zrem key member 移除元素;可以多个 zrem tv_rank 海信 索尼 创维 移除这三个元素
posted @ 2023-05-24 17:30  CyrusHuang  阅读(10)  评论(0编辑  收藏  举报