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 xiaominghset people age 18hmset 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:回滚事务