1. 配置中心算法
Redis 自己就是内存 K/V 数据库,支持 哈希、集合、列表等五种数据结构,从而配置信息的存储、读取速度都可以获得知足,Redis 还提供订阅/发布功能从而能够在配置发生改变时通知不一样服务器来进行更新相关配置。数据库
2. 分布式锁缓存
使用 Redis 的 SETNX 命令或者 SET 命令配合 NX 选项的方式以及过时时间等功能能够很方便的实现一个性能优越的分布式锁。服务器
3. 缓存数据结构
Redis 支持多种过时淘汰机制,自己性能的优点也使 Redis 在缓存方面获得普遍使用。并发
4. Lua 脚本app
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并开放源代码。Redis 支持 Lua 脚本的运行,从而能够扩展 Redis 中的命令实现不少复杂功能。分布式
Redis 支持使用 Lua 脚原本实现一些组合命令逻辑处理,从而可使用 Redis 作为限流、分布式惟一 ID 相关技术的实现。性能
经过eval命令调用优化
5. Redis 支持 BitMaps
位图(bitmap)是一种很是经常使用的结构,在索引,数据压缩等方面有普遍应用,能同时保证存储空间和速度最优化(而没必要空间换时间)。
使用 Redis 的 BitMaps 作为用户登陆记录统计,不只统计速度极快,并且内存占用极低。
setbit, getbit, bitcount
6. Redis 支持 HyperLogLog 算法
Redis HyperLogLog是一种使用随机化的算法,以少许内存提供集合中惟一元素数量的近似值。
HyperLogLog 能够接受多个元素做为输入,并给出输入元素的基数估算值:
HyperLogLog 的优势是,即便输入元素的数量或者体积很是很是大,计算基数所需的空间老是固定的、而且是很小的。
在 Redis 里面,每一个 HyperLogLog 键只须要花费 12 KB 内存,就能够计算接近 2^64 个不一样元素的基数。这和计算基数时,元素越多耗费内存就越多的集合造成鲜明对比。使用 HyperLogLog 算法,咱们能够垂手可得的实现 IP 统计等对数据允许些许偏差的统计功能。
基数:集合中不一样元素的数量。好比 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基数就是3。
估算值:算法给出的基数并非精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合理的范围以内。
7. Redis 支持 Geo 功能
咱们可使用基于 Redis 来实现地理位置相关管理,附近的人、两地理位置间距离计算等功能变得极为容易实现。
8. 简单消息队列
Redis 列表 + 发布/订阅功能能够很方便的实现一个简单的消息队列,将消息存入 Redis 列表中,经过 发布/订阅功能通知指定成员,成员获取到通知后能够根据通知内容进行对应处理。
9. 全文检索
Redis 官方团队开发了 RediSearch 模块,能够实现使用 Redis 来作全文检索的功能。
10. 分布式惟一ID
Redis 的设计使其能够避免并发的多种问题,使其命令都是原子执行,这些特性都天生匹配分布式惟一ID生成器的要求。
并且经过与 Lua 脚本的结合使用更是能生成复杂的有某些规律的惟一ID。
https://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650690069&idx=1&sn=38f9ce616c4a85e7492fc53533dcb0e0&chksm=bea623c689d1aad09cfa942fa2e348c1818fe4c72609eb3aaa53c92f07a82c3677b3a69d1603&scene=0&key=d6901a04ff0e16e8f5f153994c8a01bf3913272d33a49d44f1a683d6d536834b29415be850eae5e38dc86a5e32a0ac8cc30fb96c9a86e1b63b1599160b05248dc9274caeb6493fc5111c7e078e239365&ascene=0&uin=Mjc5Nzc3MDE4MA%3D%3D&devicetype=iMac+MacBookPro12%2C1+OSX+OSX+10.12.2+build(16C67)&version=12020010&nettype=WIFI&fontScale=100&pass_ticket=k%2BcN5HCFGqDMp0oRFjvSAL55Ai964R3j%2BiNG00BA2AdES0LaDwp0DMKua9l4afpI