1.string(字符串)
特点:
二进制安全
适用场景:
- 计数器
- 对象缓存
- 统计数量(粉丝数)
2.Hash(哈希)
特点:
适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)
适用场景:
hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息! hash 更适合于对象的 存储,String更加适合字符串存储!
3.list(列表)
特点:
链表(双向链表)可演化成栈,队列,在两边插入或者改动值,效率高
适用场景:
- 1,最新消息排行等功能(比如朋友圈的时间线)
- 2,消息队列
4.Set(集合)
特点:
哈希表实现,元素不重复
1、添加、删除,查找的复杂度都是O(1)
2、为集合提供了求交集、并集、差集等操作
适用场景:
- 1、共同好友
- 2、利用唯一性,统计访问网站的所有独立ip
- 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐
5.Zset(有序集合)
特点:
将Set中的元素增加一个权重参数score,元素按score有序排列,天然排序
适用场景:
- 1、排行榜
- 2、带权重的消息队列
实用:
Geospatial 地理位置
georadius 以给定的经纬度为中心, 找出某一半径内的元素
我附近的人? (获得所有附近的人的地址,定位!)通过半径来查询!
获得指定数量的人,200 所有数据应该都录入:china:city ,才会让结果更加请求!
Hyperloglog l浏览量
一个人访问一个网站多次,但是还是算作一个人
传统的方式, set 保存用户的id,然后就可以统计 set 中的元素数量作为标准判断 ! 这个方式如果保存大量的用户id,就会比较麻烦!我们的目的是为了计数,而不是保存用户id;
Bitmap
统计用户信息,活跃,不活跃! 登录 、 未登录! 打卡,365打卡! 两个状态的,都可以使用 Bitmaps!
Bitmap 位图,数据结构! 都是操作二进制位来进行记录,就只有0 和 1 两个状态! 365 天 = 365 bit 1字节 = 8bit 46 个字节左右!
getbit sign 3