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 
类型 示例
String(字符串) hello world
Hash(哈希) {name: 'jack', age: 21}
List(列表) [A -> B -> C -> D]
Set(集合) {A,B,C}
SortedSet(有序集合) {A:1,B:2,C:3}
命令 说明
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
命令 说明
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}
命令 说明
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
命令 说明
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 求并集

特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

特征:

  • 可排序

  • 元素不重复

  • 查询速度快

  • 默认按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 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

相关文章