redis

redis的数据结构

string hash set zset list 五种数据结构

string为key value格式的一组组数据,key需要保持唯一性

可以设置过期时间 set name zwj ex 10

可以在不存在的情况下插入 setnx name test

获取值 get name

批量设置 mset name james age 19

 

 

应用场景:

缓存,减少数据库压力,将部分数据存储在redis中

session共享,在集群的情况下通过spring session和redis实现session共享

计数器:redis为单线程,计数器可为原子操作,比如文章的点赞数,浏览量统计,分享数等

分布式系统全局序列号:分布式数据库集群的情况下,可通过redis生成全局唯一的序列号

 

hash 储存类似于关系型数据库的表结构

存储一些对象信息相比与string类型更加直观,更加节省空间等,但是过期时间只能作用在ky上,不能作用到哈希表中的key上

类似于数据表的二维表的格式用hash

hmset user:001 name james sex boy age 19

hgetall user:001

hget user:001 name

 

list队列类型(列表总的元素可以重复)最多可存 2的32次方减1个元素

相对来说有个先后顺序的都可以这样来

构造数据结构:栈,队列,阻塞队列

微信关注的订阅号消息列表

lpop

lpush

rpush

rpop

 

 

set集合类型(已无序的方式来储存多个各不相同的元素,最多存放2的32次方减一个元素)

用户标签,社交,查询有共同兴趣爱好的人,智能推荐

点赞,收藏,标签,抽奖(可以求差集|交集|并集)

社交关系模型

sadd user1 a b c

smembers user1

srem user1 a //返回1 删除元素a remove

scard user1 //返回2 计算元素个数

 

使用示例:

sadd user:1:fav basball fball pq

sadd user:2:fav basball fball

..............................

或给标签添加用户

sadd basball :users user:1 user:2

sadd fball :users user:1 user:2

..............................

计算有共同爱好的人

sinter user:1:fav user2:fav

 

 

zset类型(有序集合)

zadd key score member

zadd user:zan 200 james 120 mike 100 lee

 

有排名的点赞,收藏之类的信息,常用于排行榜,如视频网站需要对用户上传视频做排行榜,活点赞数与集合有联系,不能有重复的成员

一个元素跟一个数字类型的 score 根据score可以进行排序

 

1,key名称

规范性:使用业务名作为前缀,用冒号分割。有子系统时,可以使用多个冒号或者下划线。例如order:time:123456 data_123_456

间接性:在保持规范性的同时,也需要注意key的长度,key过长会导致占用较多的内存空间

避免转移字符:不能使用逗号,换行,空格,双引号,单引号,大括号等转义字符

 

2,集合类操作

使用zset,set,list,hash等集合类的O(N)操作时要评估当前元素个数的规模,以及将来的增长规模,对于短期就可能变为大集合的key,要预估O(N)操作的元素数量,避免全量,可以使用HSCAN,SSCAN,ZSCAN进行渐进操作

集合元素数量过大在使用过程中会影响redis的实际性能,hash类元素个数建议尽量不要超过100,集合类,链表类数量尽量不要超过10k。元素数量过大可考虑拆分成多个key进行处理

 

3,value大小

数量比较多的时候可以考虑改用hash,list等结构存储,没一个filed存放一些信息,如果数量略微较大可使用hscan获取,如果数据量超过建议值,可以考虑拆分成多个key

当数据量较小的时候,建议使用string,当value偏大时也可以考虑对他进行压缩以减少读取和写入对象是所需的网络带宽。对比压缩算法lz4,gzip,bzip,看看哪个算法能够对存储的数据提供最好的压缩效果和最好的性能

 

string类型尽量控制在10k以内,虽然redis对单个key可以缓存的对象长度能够支持到很大,1k基本是redis的性能拐点。当缓存超过10k,100k,1m性能会有特别明显的下降

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值