文章目录
概述命令官网Key命令Redis 的过期时间设置有四种形式: redis字符串(String)最最常用 `set key value`常用命令图示多值设置 `mset`、`mget`获取指定区间范围内的值 `getrange`、`setrange`数值增减 `INCR key`、`DECR key`获取内容长度及内容追加 `STRLEN key`、`APPEND key xxx`动态设置过期时间,分布式锁先弹出老值,再建新值 `getset` redis列表 (List)常用命令图示`lpush/rpush/lrange``lpop/rpop`按照索引下标获得元素(从上到下) `lindex`获取列表中的元素个数 `llen`根据值删除 `lrem key 数字N 给定值v1`截取索引范围内的,相当于删除索引外的 `ltrim key 开始index 结束index`移除列表的最后一个元素,并将该元素添加到另一个列表并返回`keyrpoplpush 源列表 目的列表`按照索引修改列表的元素 `lset key index value`在已有的值前面/后面插入新的值 `linsert key before/after 已有值 插入的新值` redis哈希表(Hash)常用命令图示`hset/hget/hmset/hmget/hgetall/hdel``hlen KEY`,获取hash内的kv键值对个数`hexists KEY 在KEY里面的某个值的key` 判断某个值在不在里面`hkeys/hvals KEY` 单独罗列key、单独罗列key对应的值`hincrby/hincrbyfloat` 增加`hsetnx KEY key value` 不存在赋值,存在了无效应用:购物车 redis集合 (Set)常用命令说明添加元素`SADD key member [member...]``SMEMBERS key` 遍历集合中的所有元素`SISMEMBER key member` 判断元素是否在集合中`SREM key member [member ...]` 删除元素`scard key` 统计集合里面的元素个数从集合中随机展现设置的数字个数元素,元素不删除 `SRANDMEMBER key [数字]``SPOP key [数字]` 从集合中随机弹出一个元素,出一个删一个`smove key1 key2 在key1里已存在的某个值` 将key1里已存在的某个值赋给key2**重要,集合运算**应用:共同好友、推荐 redis有序集合 (ZSet)常用命令图示添加元素 `ZADD key score member [score member ...]`按照元素分数从小到大的顺序遍历出来 `ZRANGE key start stop [WITHSCORES]`倒序 `zrevrange``ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]` 获取指定分数范围的元素`ZSCORE key member` 获取元素的分数`ZCARD key` 获取集合中元素的数量`zrem key 某score下对应的value值` 作用是删除元素增加某个元素的分数`ZINCRBY key increment member`获得指定分数范围内的元素个数`ZCOUNT key min max`ZMPOP从键名列表中的第一个非空排序集中弹出一个或多个元素,它们是成员分数对`zrank key values值`,作用是获得下标值`zrevrank key values值`,作用是**逆序**获得下标值应用:根据商品销售对商品进行排序显示
概述
命令官网
英文版:https://redis.io/commands/中文版:http://redis.cn/commands.html/Key命令
命令不区分大小写,但是key区分
命令 | 说明 |
---|---|
keys * | 查看当前库所有的key |
exists key | 判断某个key是否存在,返回1表示存在,返回0表示不存在 |
type key | 查看你的key是什么类型 |
del key | 删除指定的key数据 |
unlink key | 非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作 |
ttl key | 查看还有多少秒过期,-1表示永不过期,-2表示已过期 |
expire key 秒数 | 给定的key设置过期时间 |
move key dbindex【0-15】 | 将当前数据库的 key移动到给定的数据库 db 当中 |
select dbindex | 切换数据库[0-15] ,默认为0,配置文件中databases 16 |
dbsize | 查看当前数据库key的数量 |
flushdb | 清空当前库 |
flushall | 通杀全部库 |
Redis 的过期时间设置有四种形式:
EXPIRE 秒——设置指定的过期时间(秒),表示的是时间间隔。PEXPIRE 毫秒——设置指定的过期时间,以毫秒为单位,表示的是时间间隔。EXPIREAT 时间戳-秒——设置指定的 Key 过期的 Unix 时间,单位为秒,表示的是时间/时刻。PEXPIREAT 时间戳-毫秒——设置指定的 Key 到期的 Unix 时间,以毫秒为单位,表示的是时间/时刻。redis字符串(String)
string是redis最基本的类型,一个key对应一个value。
string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
最最常用 set key value
set key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL]
常用命令图示
多值设置 mset
、mget
mset 同时设置一个或多个 key-value 对 mget 获取所有(一个或多个)给定 key 的值 获取指定区间范围内的值 getrange
、setrange
getrange 类似between…and的关系
从零到负一表示全部 setrange设置指定区间范围内的值,格式是setrange key值 具体值
起到覆盖
数值增减 INCR key
、DECR key
一定要数值类型数据
INCR key递增
INCR key increment DECR key递减
DECR key increment获取内容长度及内容追加 STRLEN key
、APPEND key xxx
STRLEN key 长度
APPEND key xxx内容追加
动态设置过期时间,分布式锁
SETEX key 秒数 value![在这里插入图片描述](http://zhangshiyu.com/zb_users/upload/2023/05/20230505084104168324726421613.png)
SETNX key value
![在这里插入图片描述](http://zhangshiyu.com/zb_users/upload/2023/05/20230505084104168324726487946.png)
先弹出老值,再建新值 getset
redis列表 (List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
它的底层实际是个双端链表,最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)
常用命令图示
lpush/rpush/lrange
没有rrange
lpop/rpop
出栈,弹出元素
按照索引下标获得元素(从上到下) lindex
获取列表中的元素个数 llen
根据值删除 lrem key 数字N 给定值v1
解释(删除N个值等于v1的元素),LREM list3 0 值,表示删除全部给定的值。零个就是全部值
截取索引范围内的,相当于删除索引外的 ltrim key 开始index 结束index
截取指定索引区间的元素,格式是ltrim list的key 起始索引 结束索引
移除列表的最后一个元素,并将该元素添加到另一个列表并返回keyrpoplpush 源列表 目的列表
按照索引修改列表的元素 lset key index value
在已有的值前面/后面插入新的值 linsert key before/after 已有值 插入的新值
redis哈希表(Hash)
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)
本质就是KV,K不变的情况下,V拆分新的kv
常用命令图示
hset/hget/hmset/hmget/hgetall/hdel
增、查、批量增、批量查、查全部(python的dick.items())、删除
hlen KEY
,获取hash内的kv键值对个数
hexists KEY 在KEY里面的某个值的key
判断某个值在不在里面
存在返回1,不存在返回0
hkeys/hvals KEY
单独罗列key、单独罗列key对应的值
hincrby/hincrbyfloat
增加
hsetnx KEY key value
不存在赋值,存在了无效
不存在赋值,存在了无效
应用:购物车
新增商品 → hset shopcar:uid1024 334488 1新增商品 → hset shopcar:uid1024 334477 1增加商品数量 → hincrby shopcar:uid1024 334477 1商品总数 → hlen shopcar:uid1024全部选择 → hgetall shopcar:uid1024
redis集合 (Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是 intset 或者 hashtable。
Redis 中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)
常用命令说明
![在这里插入图片描述](http://zhangshiyu.com/zb_users/upload/2023/05/20230505084109168324726962142.png)
添加元素SADD key member [member...]
![在这里插入图片描述](http://zhangshiyu.com/zb_users/upload/2023/05/20230505084109168324726946026.png)
SMEMBERS key
遍历集合中的所有元素
SISMEMBER key member
判断元素是否在集合中
SREM key member [member ...]
删除元素
scard key
统计集合里面的元素个数
从集合中随机展现设置的数字个数元素,元素不删除 SRANDMEMBER key [数字]
SPOP key [数字]
从集合中随机弹出一个元素,出一个删一个
smove key1 key2 在key1里已存在的某个值
将key1里已存在的某个值赋给key2
重要,集合运算
集合的差集运算 A - B =》SDIFF set1 set2
集合的并集运算 A U B = 》 SUNION set1 set2
集合的交集运算 A n B =》 SINTER set1 set2
SINTERCARD numkeys key [key ...] [LIMIT limit]
![>](http://zhangshiyu.com/zb_users/upload/2023/05/20230505084110168324727065549.png)
应用:共同好友、推荐
![在这里插入图片描述](http://zhangshiyu.com/zb_users/upload/2023/05/20230505084110168324727011174.png)
redis有序集合 (ZSet)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zset集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1
常用命令图示
添加元素 ZADD key score member [score member ...]
按照元素分数从小到大的顺序遍历出来 ZRANGE key start stop [WITHSCORES]
WITHSCORES 参数不带,会返回值,带了的话会连同分数一起返回
返回索引从start到stop之间的所有元素0
倒序 zrevrange
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
获取指定分数范围的元素
limit是返回的数量,与mysql分页相似 ZRANGEBYSCORE zset1 60 90 withscores limit 0 1