能够对string进行自增和自减,从而实现计数器的功能。git
将热点数据缓存起来,同时设置内存的最大使用量和淘汰策略来保证缓存的命中率。web
使用redis做为统一的session服务器,则后端能够进行集群部署。redis
在分布式场景下,没法使用单机环境下的锁来实现对多个节点上的进程进行同步,可使用redis的SETNX(SET If Not Exists)命令,来实现分布式锁。算法
问题:在「执行setnx以后执行expire以前」用户进程意外crash,这个锁不久永远得不到释放了吗?后端
set指令有很是复杂的参数,能够同时把setnx和expire合成一条指令来用的!缓存
「多个进程执行如下Redis命令:」服务器
SETNX lock.foo <current Unix time + lock timeout + 1>
session
Set能够实现交集、并集等操做,从而实现共同好友等功能;编辑器
sadd key value //往集合添加元素,key是指向一个set
sinter key1 key2 ... //查询集合的交集
复制代码
ZSet能够实现有序性操做,从而实现排行榜等功能;(以访问量为分数进行排列)分布式
geohash地理空间索引。
geoadd key longitude latitude member //经度-维度-成员,添加到指定的集合中。能够一个省一个集合
geoadd beijing 116.182881 39.72877 良乡大学城北 geoadd beijing 116.182881 39.72877 良乡大学城南 geoadd beijing 116.318427 39.986771 新东方大厦 geoadd beijing 116.319873 39.987953 中钢大厦 geodist 返回两个位置之间的距离 geodist beijing 新东方大厦 良乡大学城北 m //m为距离单位,km,mi,ft geopos 返回指定位置的经纬度 geopos beijing 新东方大厦 georadius 返回以给定的经纬度为中心,长度范围内的成员。 georadius beijing 116.3180199 39.398575 100 km withcoord //withcoord指定返回的格式 georadiusbymember 返回指定成员长度范围内的其余成员。(能够实现附近的人) georadiusbymember beijing 新东方大厦 20 km 复制代码
12 KB
内存,就能够计算接近
2^64
个不一样元素的基数。
❝若是用set做统计,须要保护海量的数据,那内存还不炸了;
位图也能够作统计,尽管相比set内存消耗要少一些,但内存的消耗量仍是不少;
❞
pfadd key element //添加元素到指定的HyperLogLog,不存在则返回1,存在则返回0
pfcount key //返回HyperLogLog的基数估算值
pfmerge key1 key2 ...//将多个HyperLogLog合并成一个
复制代码
通常使用:统计数据量大,单条数据占用内存也大的状况,且容许存在偏差。
本文使用 mdnice 排版