文章目录
- 概述
- 命令官网
- 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 的值
- mset
-
获取指定区间范围内的值
getrange
、setrange
- getrange
类似between…and的关系
- 从零到负一表示全部
- setrange
设置指定区间范围内的值,格式是setrange key值 具体值
起到覆盖
- getrange
-
数值增减
INCR key
、DECR key
一定要数值类型数据
- INCR key
递增
- INCR key increment
- DECR key
递减
- DECR key increment
- INCR key
-
获取内容长度及内容追加
STRLEN key
、APPEND key xxx
- STRLEN key
长度
- APPEND key xxx
内容追加
- STRLEN key
-
动态设置过期时间,分布式锁
- SETEX key 秒数 value
- key不存在时才设置
SETNX key value
- SETEX key 秒数 value
-
先弹出老值,再建新值
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多亿个成员)
-
常用命令说明
-
添加元素
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 -
重要,集合运算
- 集合的差集运算 A - B =》
SDIFF set1 set2
- 集合的并集运算 A U B = 》
SUNION set1 set2
- 集合的交集运算 A n B =》
SINTER set1 set2
SINTERCARD numkeys key [key ...] [LIMIT limit]
- 集合的差集运算 A - B =》
-
应用:共同好友、推荐
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
-
ZSCORE key member
获取元素的分数 -
ZCARD key
获取集合中元素的数量 -
zrem key 某score下对应的value值
作用是删除元素 -
增加某个元素的分数
ZINCRBY key increment member
-
获得指定分数范围内的元素个数
ZCOUNT key min max
-
ZMPOP从键名列表中的第一个非空排序集中弹出一个或多个元素,它们是成员分数对
-
zrank key values值
,作用是获得下标值 -
zrevrank key values值
,作用是逆序获得下标值 -
应用:根据商品销售对商品进行排序显示