1.热点数据的缓存(最为常用的功能)
Redis提供5种数据类型进行存储:String(字符串)、List(列表)、Hash(哈希)、Set(无序,不重复集合)、ZSet(sorted set:有序,不重复集合),建议设置过期时间来进行缓存的更新,还需要考虑缓存数据库的数据一致性问题。
2.业务的限时
使用expire命令设置一个key的过期时间,时间到就会删除,主要适用于手机验证码,限时活动等。
3.排行榜(ZSet)
4.计数器
使用incrby命令可以实现原子性的递增,可以使用在秒杀活动,分布式序列号,接口请求限制,邮箱发送上线等。
5.分布式锁
建议使用redisson ,redisson内部是redlock算法。
6.大数据处理签到等(位操作)
redis内构建一个足够长的数组,每个数组元素只能是0和1两个值,然后这个数组的下标index用来表示我们上面例子里面的用户id(必须是数字),那么很显然,这个几亿长的大数组就能通过下标和元素值(0和1)来构建一个记忆系统就能够实现。用到的命令是:setbit、getbit、bitcount。
例如:统计今日登录的用户数,我们建立了一个bitmap,每一位标识一个用户ID,当某个用户访问我们的网页或执行了某个操作时,将bitmap中对应位置的位置为1,时间复杂度是O(1)。
redis> SETBIT daliy_user 100 1
(integer) 0
redis> GETBIT daliy_user 100
(integer) 1
redis> BITCOUNT daliy_user # 只返回值为1的数量
(integer) 1
7.地理位置
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
Redis GEO 操作方法有:
- geoadd:添加地理位置的坐标。
- geopos:获取地理位置的坐标。
- geodist:计算两个位置之间的距离。
- georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
- georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
- geohash:返回一个或多个位置对象的 geohash 值。