redis 是一个高性能的键值对数据库,属于 nosql 一类。
支持的键值数据类型有:
字符串类型 列表类型
有序集合类型 散列类型
集合类型
应用场景主要有:
缓存
任务队列
应用排行榜
网站访问统计
数据过期处理
分布式集群架构中的session分离
Keys 通用操作
keys *
:查看所有keys
keys key?
:正则匹配keys
del key1 key2...
:删除keys
exxists key
:查看key是否存在
get key
:获取key的值
rename key newkey
:重命名key
expire key second
:设置有效期
ttl key
:查看剩余有效期
type key
:查看数据类型
字符串类型存取
set key value
:创建一个键为key,值为value的数据。
get key
:获取键为key的数据的值。
getset key value
:先获取键为key的数据值,再将其值设置为value
del key
:删除键为key的数据。
incr key
:将键为key的数据的值加1(数据若无法转成int型则会报错,若值不存在则将创建默认值为0再加1)
decr key
:将键为key的数据的值减,与incr相反功能
incrby key num
:将键为key的数据的值加num(数据若无法转成int型则会报错,若值不存在则将创建默认值为0再加1)
decrby key num
:将键为key的数据的值减num,与decrby相反功能
append key arg
:将键为key的数据的值后追加字符串arg,若不存在则创建并赋值为arg
哈希数据
string key 和string value的map容器。
每一个hash可以存储4294967295个键值对
hset setname key value
:创建一个hash并添加一对键值。
eg:
hset people name xiaoming
hset people age 18
hmset setname key1 value1 key2 value2
:创建一个hash并添加多对键值。
eg: hmset people name xiaoming age 18
hget setname key
:获取名为setname的哈希中键为key的数据的值。
hgetall setname
:获取名为setname的哈希中的所有键和值
hdel setname key1 key2
:删除名为setname的哈希中键为key1 key2的值。
del setname
:删除名为setname的哈希。
hexists setname key
:判断名为setname的哈希中是否存在键为key的数据,存在返回1,不存在返回0。
hincrby setname key num
:与incrby功能相同。
hlen setname
:查询哈希数据数量
hkeys setname
:查询哈希中所有的键
hvals setname
:查询哈希中所有的值
列表
ArrayList 使用数组方式
LinkedList 使用双向链接方式
lpush listname value1,value2,value3...
:从左侧向链表中添加数据,没有则创建。数据中value1在右侧,value2在中间,value3在左侧
rpush listname value1,value2,value3...
:从右侧添加。
lrange listname start_num end num
:查看列表中从start_num到end_num的数据
lpop listname
:从左弹出数据
rpop listname
:从右弹出数据
llen listname
:查看列表长度
lpushx listname value
:当此列表存在时左边插入value
rpushx listname value
:当此列表存在时左边插入value
lrem listname count value
:删除列表中count个value数据,count小于0时从后删
lset listname index value
:将第index个元素设置为值value
linser listname before key value
:在元素key前插入元素value
linser listname after key value
:在元素key后插入元素value
rpoplpush listname1 listname2
:将listname1右边的一个元素弹出到listname2的左边
set
set集合中不准许出现重复的元素
sadd setname value1,value2,value3..
创建set集合,并向其中插入元素
srem setname value
:删除集合中的value元素
smembers setname
:查看set中的数据
smembers setname value
:判断set中是否存在元素value
sdiff setname1 setname2
:差集运算
sinter setname1 setname2
:交集运算
sunion setname1 setname2
:并集运算
scard setname
:返回数据数量
srandmember
:随机返回一个数据
sdiffstore setname1 setname2 setname3
:将setname1与setname2的差集数据存入setname3
交集,并集也相同
Sorted-Set
zadd sortsetname score1 value1 score2 value2...
:创建一个sortedset,并添加数据
zscore sortsetname value
:获取value的score
zcard sortset
:获取sortedset中数据个数
zrem sortset value1,value2...
:删除指定的value
zrange sortsetname start_num end_num
:获取指定范围的value数据
zrange sortsetname start_num end_num withscores
:获取指定范围的value以及score数据
zrevrange
:与zrange用法类似,按score的从大到小排列
zremrangebyrank sortsetname start_num end_num
:删除指定范围内的数据
zremrangebyscore sortsetname start_num end_num
:删除指定score范围内的数据
zrangebyscore sortsetname start_num end_num withscores limit start_num1 end_num1
:获取指定score范围内的指定范围数据
zincrby sortsetname num value
:给value的score加num
zcount sortsetname score_start_num score_end_num
:指定score范围内元素个数
使用场景:
- 积分排行榜
- 构建索引数据
切换数据库
redis 默认有0~15号数据库,使用中默认使用0号
select 1
:切换数据库
move key 1
:移动key到1号数据库
引入事物
multi ***
:以multi开始后语句以事物方式执行
exec
:提交事务
discar
:回滚事务