Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. —— redis.io
字符串(strings):存储整数(比如计数器)和字符串(废话。。),有些公司也用来存储json/pb等序列化数据,并不推荐,浪费内存。
哈希表(hashes):存储配置,对象(比如用户、商品),优点是可以存取部分key,对于经常变化的或者部分key要求atom操作的适合。
列表(lists):可以用来存最新用户动态,时间轴,优点是有序,确定是元素可重复,不去重。
集合(sets):无序,唯一,对于要求严格唯一性的可以使用,可以用来去重。
有序集合(sorted sets):集合的有序版,很好用,排名之类的复杂场景可以考虑。
位图(bitmaps):这个不是新增的数据类型,只是可以把字符串类型按照单个位的形式进行操作。可以用来统计活跃用户,实现用户签到功能,性能颇高。不过统计活跃用户建议是增量读取日志或者引入消息中间件异步刷到redis,非业务必须功能最好不要影响线上业务,特别是登录这种门户业务更是重中之重。
计数器(hyperloglogs,翻译待定):如名字,添加元素只记录元素个数,并不会存储元素本身,节省空间并且避免重复count,这个感觉直接用incr就可以实现。
地理空间(geospatial indexes):用来做地理位置查询,比如两点之间的距离,一个点附近有多少元素,适合点比较固定的场景,或者只考虑当前位置的场景,像附近的人这种就不适合,一是需要考虑某段时间内的点,二是点经常更新,压力比较大。