redis 是一个高性能的键值对数据库,属于 nosql 一类。
支持的键值数据类型有:
字符串类型 列表类型
有序集合类型 散列类型
集合类型
应用场景主要有:
缓存
任务队列
应用排行榜
网站访问统计
数据过期处理
分布式集群架构中的session分离
Keys 通用操作
keys *
:查看所有keyskeys key?
:正则匹配keysdel key1 key2...
:删除keysexxists key
:查看key是否存在get key
:获取key的值rename key newkey
:重命名keyexpire key second
:设置有效期ttl key
:查看剩余有效期type key
:查看数据类型
字符串类型存取
set key value
:创建一个键为key,值为value的数据。get key
:获取键为key的数据的值。getset key value
:先获取键为key的数据值,再将其值设置为valuedel 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
:当此列表存在时左边插入valuerpushx listname value
:当此列表存在时左边插入valuelrem listname count value
:删除列表中count个value数据,count小于0时从后删lset listname index value
:将第index个元素设置为值valuelinser listname before key value
:在元素key前插入元素valuelinser listname after key value
:在元素key后插入元素valuerpoplpush listname1 listname2
:将listname1右边的一个元素弹出到listname2的左边
set
set集合中不准许出现重复的元素
sadd setname value1,value2,value3..
创建set集合,并向其中插入元素srem setname value
:删除集合中的value元素smembers setname
:查看set中的数据smembers setname value
:判断set中是否存在元素valuesdiff 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的scorezcard sortset
:获取sortedset中数据个数zrem sortset value1,value2...
:删除指定的valuezrange 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加numzcount sortsetname score_start_num score_end_num
:指定score范围内元素个数
使用场景:
- 积分排行榜
- 构建索引数据
切换数据库
redis 默认有0~15号数据库,使用中默认使用0号
select 1
:切换数据库move key 1
:移动key到1号数据库
引入事物
multi ***
:以multi开始后语句以事物方式执行exec
:提交事务discar
:回滚事务