03.Redis数据类型操作命令与应用场景(上)
Redis通用命令
命令 | 说明 |
---|---|
ping | 检测redis服务状态,返回PONG表示服务正常 |
dbsize | 返回当前数据库的key的数目 |
select db | 切换到第几个数据库;Redis 默认使用 16 个库,从 0 到 15。 redis 默认自动使用 0 号库。 |
flushdb | 删除当前数据库数据 |
exit或quit | 客户端退出当前redis连接 |
keys pattern | 查找所有符合模式 pattern 的 key。* 表示 0-多个字符;?表示单个字符, |
exists key [key…] | 判断 key 是否存在;返回值:整数,存在 key 返回 1,其他返回 0. 使用多个 key,返回存在的 key 的数量。 |
expire key seconds | 设置 key 的生存时间,超过时间,key 自动删除。单位是秒。 |
ttl key | 以秒为单位,返回 key 的剩余生存时间(ttl: time to live) |
type key | 查看 key 所存储值的数据类型 |
del key [key…] | 删除存在的 key ,不存在的 key 忽略。 |
字符串类型(string)
命令 | 说明 |
---|---|
set key value | 存入字符串键值对 |
mset key value [key value …] | 批量存储字符串键值对 |
setnx key value | 存入一个不存在的字符串键值对 |
get key | 获取一个字符串键值 |
mget key [key …] | 批量获取字符串键值 |
del key [key …] | 删除一个键 |
incr key | 将key中储存的数字值加1 |
decr key | 将key中储存的数字值减1 |
incrby key increment | 将key所储存的值加上increment |
decrby key decrement | 将key所储存的值减去decrement |
strlen key | 返回 key 所储存的字符串值的长度 |
getrange key start end | 获取 key 中字符串值从 start 开始 到 end 结束 的子字符串,包括 start 和 end |
setrange key offset value | 用 value 覆盖(替换)key 的存储的值从 offset 开始,不存在的 key 做空白字符串 |
应用场景
-
单值缓存
set key value
get key -
对象缓存
set user:1 value(json格式数据)
//存储用户id为1的用户
mset user:1:name zhangsan user:1:age 22
mget user:1:name user:1:age -
分布式锁
//setnx只能设置不存在的键, 能够设置成功表示获取锁
setnx product:10001 true //返回1代表获取锁成功
setnx product:10001 true //返回0代表获取锁失败
delproduct:10001 //执行完业务释放锁
set product:10001 true ex 10 nx //防止程序意外终止导致死锁 -
计数器
incr article:readcount:{文章id}
get article:readcount:{文章id} -
分布式session
spring session + redis实现session共享
哈希类型 hash
命令 | 说明 |
---|---|
hset key field value | 存储添加一个哈希表key的键值 |
hset key field value | 存储添加一个哈希表key的键值 |
hsetnx key field value | 存储添加一个不存在的哈希表key的键值 |
hmset key field value [field value …] | 在一个哈希表key中存储多个键值对 |
hget key field | 获取哈希表key对应的field键值 |
hmget key field [field …] | 批量获取哈希表key中多个field键值 |
hdel key field [field …] | 删除哈希表key中的field键值 |
hlen key | 返回哈希表key中field的数量 |
hgetall key | 返回哈希表key中所有的键值 |
hincrby key field increment | 为哈希表key中field键的值加上增量increment |
hkeys key | 返回哈希表 key 中的所有 field 域 |
hvals key | 返回哈希表 中所有域的值 |
hexists key field | 查看哈希表 key 中,给定域 field 是否存在 |
应用场景
- 对象缓存
hmset user 1:name zhangsan 1:age 20
hmget user 1:name 1:age
- 电商购物车
1)以用户id为key
2)商品id为field
3)商品数量为value
- 购物车操作
//用户id为1001 商品id为10088 value为商品数量
添加商品:hset cart:1001 10088 1
增加数量:hincrby cart:1001 10088 1
商品总数:hlen cart:1001
删除商品:hdel cart:1001 10088
获取购物车所有商品:hgetall cart:1001