-
存储结构
字符类型 散列类型 列表类型 集合类型 有序集合
-
各种数据结构的使用
一个字符类型的key默认存储的最大容量是512M
String
赋值和取值
赋值:给key:age 赋值 20
set key value
取值:取出key:age的值
get key
递增数字,redis 的命令 incr key 是原子操作
incr key
错误的演示(在使用分布式是用代码这样计算会出现非原子性操作)
当多个线程访问的时候,value 的得值,和预想的不一样
int value= get key;
value =value +1;
incr 使用场景
短信重发机制:expire sms:limit:mobile 30 —>设置key 30秒过期
在30秒内发送短信次数自增,在单位时间内,最多只能发送规定的短信条数。
incryby key increment 递增指定的整数
decr key 原子递减.
append key value 向指定的key追加字符串
strlen key 获得key对应的value的长度
mget key key… 同时获得多个key的value
mset key value key value key value … 同时设置对个key值
setnx key value // key 存在 返回0 不存在返回1
运用场景:分布式锁
list, 可以存储一个有序的字符串列表
LPUSH/RPUSH: 从左边或者右边push数据
LPUSH/RPUSH key value value …
llen num 获得列表的长度
lrange key start stop ; 索引可以是负数, -1表示最右边的第一个元素
lrem key count value 删除
lset key index value 修改制定索引的值
LPOP/RPOP : 取数据
应用场景:可以用来做分布式消息队列
散列类型
hash key value 不支持数据类型的嵌套
比较适合存储对象
person
age 18
sex 男
name 何龙云
…
hset key field value //在key 设置 属性为feild 的 value值
hget key filed //取值
hmset key filed value [filed value …] 一次性设置多个值
hmget key field field … 一次性获得多个值
hgetall key 获得hash的所有信息,包括key和value
hexists key field 判断字段是否存在。 存在返回1. 不存在返回0
hdel key field [field …] 删除一个或者多个字段
集合类型
set 跟list 不一样的点。 集合类型不能存在重复的数据。而且是无序的
sadd key member [member …] 增加数据; 如果value已经存在,则会忽略存在的值,并且返回成功加入的元素的数量
srem key member 删除元素
smembers key 获得所有数据
sdiff key key … 对多个集合执行差集运算
sunion 对多个集合执行并集操作, 同时存在在两个集合里的所有值
有序集合
zadd key score member
zrange key start stop [withscores] 去获得元素。 withscores是可以获得元素的分数
如果两个元素的score是相同的话,那么根据(0<9<A<Z<a<z) 方式从小到大
运用场景:网站访问的前10名。
17/100
HLY1234560
redis的事务处理
MULTI 去开启事务
EXEC 去执行事务
过期时间
expire key seconds
ttl key 获得key的过期时间
发布订阅
publish channel message
subscribe channel [ …]
redis的事务处理
MULTI 去开启事务
EXEC 去执行事务
过期时间
expire key seconds
ttl key 获得key的过期时间
发布订阅
publish channel message
subscribe channel [ …]