Redis基础
目录
警告
本文最后更新于 2023-02-28,文中内容可能已过时,请谨慎使用。
命令查询
通用指令
# 选择指定数据库,redis内置16个数据库(0-15)
select 1
# 清除当前数据库中的所有内容(慎用!!!!)
flushdb
# 设置key的过期时间为100s
expire key 100
# 查看key的剩余有效期
ttl key
# 查看当前数据库所有key
keys *
# 通过通配符进行匹配查看
# 查看所有以test开头的key
keys test*
# 检查key1和key2是否存在
exist key1 key2
# 删除key
del key
# 重命名key为newkey
rename key newkey
# key的数据结构类型
type key
# 查看key的编码类型
object encoding key
redis5大基本数据结构
类型 | 示例 |
---|---|
String(字符串) | hello world |
Hash(哈希) | {name: 'jack', age: 21} |
List(列表) | [A -> B -> C -> D] |
Set(集合) | {A,B,C} |
SortedSet(有序集合) | {A:1,B:2,C:3} |
String
命令 | 说明 |
---|---|
set key value |
添加或者修改已经存在的一个String类型的键值对 |
get key |
根据key获取String类型的value |
mset key value... |
批量添加多个string类型的键值对 |
mget key ... |
根据多个key获取多个String类型的value |
incr key |
让一个整型的key自增1 |
incrby key increment |
让一个整型的key自增并指定步长:incrby num 2 |
incrbyfloat key increment |
让一个浮点类型的数字自增并指定步长:incrbyfloat num 10.5 |
decr key |
让一个整型的key自减1 |
setnx key value |
添加一个String类型的键值对,前提是这个key不存在,否则不执行。插入成功返回1,否则返回0 |
setex key seconds value |
添加一个String类型的键值对,并且指定有效期 |
键名可以采用层级结构,用
:
分隔
创建一个string
类型:
set test:count 1
字符串有以下三种编码形式
编码 | 值 |
---|---|
int |
可以用long类型保存的整数 |
embstr |
EMBSTR_SIZE_LIMIT 大小内可以表示的整数,浮点数以及字符串 |
raw |
其他情况 |
查看key的编码形式
OBJECT ENCODING key
Hash
命令 | 说明 |
---|---|
hset key filed... |
同时创建多个键值对,已存在的键的值将覆盖,不存在的键将创建 |
hmset key filed... |
和hset 作用类似 |
hget key |
获取指定的键对应的节点 |
hexists key field |
判断指定的键是否存在 |
hdel key field |
删除指定的键 |
hlen key |
键值对的个数 |
hgetall key |
返回所有的键值对 |
通过hset
创建
hset data:user id 1 name admin age 10
这样data:user
拥有三个键值对
{id: 1, name: 'admin', age: 10}
List
命令 | 说明 |
---|---|
lpush key element... |
将新元素压入表头 |
rpush key element... |
将新元素推入表尾 |
lpop key |
弹出表头节点 |
rpop key |
弹出表尾节点 |
lindex key index |
返回指定下标(从0开始)的节点 |
llen key |
返回列表长度 |
linsert key index |
将节点插入指定位置 |
lrem key count element |
删除多个指定值的节点 |
ltrim key start stop |
让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除 |
lrange key start stop |
返回列表的指定下标范围内的所有元素 |
lset key index element |
将列表指定的节点设置为指定的值 |
Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。
从 3.2.x 版本开始,list编码类型为
quicklist
通过rpush
创建list
, 值为1->2->3->4->5
rpush list 1 2 3 4 5
通过lpush
创建list_1
, 值为5->4->3->2->1
lpush list_1 1 2 3 4 5
修改list
指定下标的数值
lset list 0 10 # 把第一个元素的值变为10
查看所有元素
lrange list 0 -1
删除指定范围的节点:lrem key count element
Redis Lrem
根据参数count
的值,移除列表中与参数element相等的元素。
count
的值可以是以下几种:
- count > 0 : 从表头开始向表尾搜索,移除与element相等的元素,数量为count。
- count < 0 : 从表尾开始向表头搜索,移除与element相等的元素,数量为count的绝对值。
- count = 0 : 移除表中所有与element相等的值。
lrem list 0 1 # 删除list中的1
Set
命令 | 说明 |
---|---|
sadd key ... |
向set中添加一个或多个元素 |
srem key ... |
移除set中的指定元素 |
scard key |
返回set中元素的个数 |
sismember key member |
判断member是否存在于set中 |
smembers key |
获取set中的所有元素 |
sinter key1 key2 ... |
求交集 |
sdiff key1 key2 ... |
求差集(key1-key2... ) |
sunion key1 key2 |
求并集 |
特征:
- 无序
- 元素不可重复
- 查找快
- 支持交集、并集、差集等功能
Sortedset
特征:
-
可排序
-
元素不重复
-
查询速度快
-
默认按score从小到大排序,排在第一的rank为0
命令 | 说明 |
---|---|
zadd key score member... |
添加一个或多个元素到Sortedset |
zrem key member... |
删除Sortedset中的指定元素 |
zscore key member |
获取Sortedset中的指定元素的score值 |
zrank key member |
获取Sortedset中的指定元素的排名(从0开始,0排名最高) |
zcard key |
获取元素个数 |
zcount key min max |
统计在给定score范围[min,max]内的所有元素的个数 |
zincrby key increment member |
让sorted set中member元素的score自增increment |
zrange key min max |
按照score排序后,获取指定排名范围[min,max]内的元素 |
zrangebyscore key min max |
按照score排序后,获取指定score范围[min,max]内的元素 |
zdiff numkeys key1 key2 ... |
求多个集合元素的差集 |
zinter numkeys key1 key2 ... |
求多个集合元素的交集 |
zunion numkeys key1 key2 ... |
求多个集合元素的并集 |
zrevrank key member |
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 |