Redis支持以下5种数据类型:
string
(字符串)hash
(哈希)list
(列表)set
(集合)zset
(有序集合)String数据类型的说明:
一次性存储单个数据时:
添加/修改数据
set key value
获取数据
get key
删除数据 del key
一次性存储多个数据时:
m是Multiple[ˈmʌltɪpl] ——多重
添加/修改多个数据 mset key1 value1 key2 value2 …获取多个数据 mget key1 key2 …获取数据字符个数(字符串长度)strlen key追加信息到原始信息后部(如果原始信息存在就追加,否则新建) append key value
数值增减操作:
设置数值数据增加指定范围的值
incr key
incrby key increment
incrbyfloat key increment
设置数值数据减少指定范围的值 decr key decrby key increment
Tips 1:
redis用于控制数据库表主键id,为数据库表主键提供生成策略,保障数据库表的主键唯一性
此方案适用于所有数据库,且支持数据库集群
数据时效性设置:
设置数据具有指定的生命周期 setex key seconds value //设置多少秒psetex key milliseconds value //设置多少毫秒
redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作
string 类型数据操作的注意事项
数据操作不成功的反馈与数据正常操作之间的差异
① 表示运行结果是否成功
② 表示运行结果值
数据未获取到
数据最大存储量
512MB
数值计算最大范围(java中的long的最大值)
9223372036854775807
业务场景:
主页高频访问信息显示控制,例如新浪微博大V主页显示粉丝数与微博数量
解决方案:
第一种存储方式:
第二种存储方式:
这两种的说明:第一种的话可能对每一个数据来说的话,比较容易进行修改,但是对于第二种的话可能你需要取出来再进行修改
数据库中的热点数据key命名惯例
一次性操作一个数据
添加/修改数据 hset key field value获取数据 hget key field hgetall key删除数据 hdel key field1 [field2]
一次性操作多个数据
添加/修改多个数据
hmset key field1 value1 field2 value2 …
获取多个数据
hmget key field1 field2 …
获取哈希表中字段的数量 hlen key
获取哈希表中是否存在指定的字段 hexists key field
hash 类型数据扩展操作
获取哈希表中所有的字段名或字段值 hkeys key hvals key设置指定字段的数值数据增加指定范围的值 hincrby key field increment hincrbyfloat key field increment
进入存储空间的顺序进行区分
list 类型数据基本操作
添加/修改数据 lpush key value1 [value2] ……//l-left左边进rpush key value1 [value2] ……//r-right右边进
获取数据
lrange key start stop //lrange list1 0 2 (02表示的是索引,获取下标0到2的值 -1负数的话是从后往前读)
lindex key index
llen key
获取并移除数据 lpop keyrpop key
list 类型数据扩展操作
规定时间内获取并移除数据 blpop list1 10 在10秒内有数据直接拿,没有的话就等10秒blpop key1 [key2] timeout brpop key1 [key2] timeout brpoplpush source destination timeout
移除指定数据
lrem key count value
list 类型数据操作注意事项
不存储值(nil),并且值是不允许重复的
添加数据 sadd key member1 [member2]
获取全部数据
smembers key
删除数据 srem key member1 [member2]
获取集合数据总量 scard key
判断集合中是否包含指定数据
sismember key member
set 类型数据的扩展操作
业务场景
每位用户首次使用今日头条时会设置3项爱好的内容,但是后期为了增加用户的活跃度、兴趣点,必须让用户 对其他信息类别逐渐产生兴趣,增加客户留存度,如何实现?
业务分析
随机获取集合中指定数量的数据
srandmember key [count]
随机获取集合中的某个数据并将该数据移出集合
spop key [count]
Tips 8: redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐, 大V推荐等
共同好友
求两个集合的交、并、差集
sinter key1 [key2] //交
sunion key1 [key2] //并
sdiff key1 [key2] //差
求两个集合的交、并、差集并存储到指定集合中
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
将指定数据从原始集合中移动到目标集合中
smove source destination member
根据自身特征进行排序的方式