本文学习知识点
redis五大数据类型数据类型:string、hash、list、set、sorted_set
五大类型各自的应用场景
Redis五大数据类型及应用场景
1. string类型
1-1 string类型数据的基本操作
1-2 string类型 增减操作
1-3 string类型 时效操作
1-4 string类型的应用场景
2. hash类型
2-1 hash类型数据的基本操作
2-2 hash类型数据的扩展操作
2-3 hash业务场景之购物车
3. list类型
3-1 list类型数据的基本操作
3-2 list类型数据的扩展操作
3-3 list业务场景
4. set类型
4-1 set类型数据的基本操作
4-2 set类型数据扩展操作
4-3 set类型业务场景推荐信息
4-4 set类型业务场景挖掘用户关系
4-5 set类型业务场景 实现网站的PV UV IP的记录
5. sorted_set类型
5-1. sorted_set类型基本操作
总结
1. string类型
1-1 string类型数据的基本操作
添加 / 修改数据:set key value
获取数据:get key
删除数据:del key
添加 / 修改多个数据:mset key value key1 value1
获取多个数据:mget key key1
追加信息到原始数据后边(不存在时则添加):append key value
1-2 string类型 增减操作
设置数值增加指定范围的值:incr key 默认每次加1 | incrby key value 每次新增value
设置数据减少指定范围:decr key | decrby key value 跟新增是一回事
应用场景
控制数据库表主键id,为数据库表提供主键生成策略,保证数据表主键的一致性。
1-3 string类型 时效操作
设置过期时间:setex key seconds value
应用场景
实现限制时间投票功能:例如一个微信一个小时可以投一次
实现热点信息:例如电商行业热门商品、新闻网站热门新闻
1-4 string类型的应用场景
微博大V主页高频的访问,对于粉丝数、关注数、微博数都需要时时更新。这个就属于高频信息了,我们就可以使用redis的string类型来解决
在redis中为大V设定用户信息,以用户主键和属性为键值,以下为实现案例。
在这里需要简单的说一下key的命名规则:以表名+主键+主键值+字段 :字段值。以这样的规则来命名就可以很好的来管理我们的键值。
我们还可以使用另外一种方式来实现,就是键后边直接跟一个结构,例如
以上的俩种方式都是可以实现的,只是第一种可以很方便的对任意一个值进行管理,第二种是改一个都得改一次,看业务场景,定时刷新就行。
2. hash类型
2-1 hash类型数据的基本操作
添加 / 修改数据:hset key field value
获取数据:hget key field | hgetall key
删除数据:hdel key field field1
添加 / 修改多个数据:hmset key field value field1 value1
获取多个数据:hmget key field field1
获取表中字段数量:hlen key
获取表中是否存在某个字段:hexists key field
2-2 hash类型数据的扩展操作
获取hash表中所有的字段值:hkeys key
获取hash表中所有的字段值:hvals key
设置指定字段的数值增加指定范围的值:hincrby key field increment | hincrbyfloat key field increment
2-3 hash业务场景之购物车
此图来源于网络非自制,只是模拟购物车场景
在上图中,我们可以看到购物车里的信息,下来咱们使用redis来对这个购物车的实现。
这里实现了一个添加购物车和获取购物车,keys的命名为 表名+主键+主键值
在上图中,我们会有一个问题就是商品信息存储会大量重复,所有我们也需要将商品单独给一直hash。如下图,只存储商品id
这里提供了俩种设置方式,一种是设置多个字段,一种是直接存储为json。信息不经常变动的话可以使用json
给大家在提供一个方法hsetnx key field value,如果有则不进行添加,没有则添加。这个功能就使用在不同的用户添加同样的商品时不会执行覆盖和无用操作