Redis 是一个强大的内存数据结构存储, 包含数据库, 缓存和消息代理等多种用途. 大多数人经常认为它不过是一个简单的键值存储, 但其实它有更多的能力.
下面给出一些实例
1. 全页面缓存
首先是整页缓存. 如果你正在使用服务器端呈现的内容, 则不需要为每个单独的请求重新渲染每个页面. 使用如 Redis 这样的缓存, 你可以缓存经常请求的内容, 从而大大减少请求最多的页面的延迟, 并且大多数框架针对 Redis 缓存页面都有 hooks.
简单命令
- / Set the page that will last 1 minute
- SET key "..." EX 60
- // Get the page
- GET key
2. 排行榜
Redis 令人耀眼的地方之一就是排行榜. 由于 Redis 在内存中, 因此可以非常快速和高效地处理递增和递减. 将此与每个请求运行 SQL 查询比较, 性能收益巨大! 这与 Redis 的排序集相结合意味着你可以以毫秒为单位抓取列表中评分最高的项目, 而且实现起来非常容易.
简单命令
- // Add an item to the sorted set
- ZADD sortedSet 1 "one"
- // Get all items from the sorted set
- ZRANGE sortedSet 0 -1
- // Get all items from the sorted set with their score
- ZRANGE sortedSet 0 -1 WITHSCORES
3. 会话 Session 存储
我所见的 Redis 最常见的用途是会话存储. 与其他会话存储 (如 Memcache) 不同, Redis 可以保留数据, 以便在缓存停止的情况下, 在重新启动时, 所有数据仍然存在. 即便不是需要严格持续的任务, 此功能仍可以为你的用户省去大量的麻烦. 没有人会乐于见到他们的会话被无缘无故随机删掉.
简单命令
- // Set session that will last 1 minute
- SET randomHash "{userId}" EX 60
- // Get userId
- GET randomHash
4. 队列
使用 Redis 可以做的一个不太常见, 但非常有用的事情是排队. 无论是电子邮件队列还是其他应用程序使用的数据, 你都可以在 Redis 中创建一个高效的队列. 任何熟悉堆栈以及会 push 和 pop 项目的开发人员都可以轻松自然地使用此功能.
简单命令
- // Add a Message
- HSET messages
- ZADD due
- // Recieving Message
- ZRANGEBYSCORE due -inf LIMIT 0 1
- HGET messages
- // Delete Message
- ZREM due
- HDEL messages
- 5.pub/sub
Redis 在真实世界的最终用法即我将在这篇文章中提出的 pub / sub. 这是 Redis 内置的最强大的功能之一; 得到的可能是无限的. 你可以创建一个实时聊天系统, 在社交网络上触发好友请求的通知等等. 这个功能是 Redis 提供的最被低估的功能之一, 但功能非常强大, 而且使用简单.
简单命令
- // Add a message to a channel
- PUBLISH channel message
- // Recieve messages from a channel
- SUBSCRIBE channel
结论
希望这些 Redis 的用法能够对您有所帮助. 虽然这篇文章只介绍了 Redis 的几种用法, 但是, 希望你能从中获得更好利用 Redis 的灵感.
来源: http://stor.51cto.com/art/201809/583289.htm