- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Redis 在真实世界的 5 个用法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助.
Redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面我将会总结一些Redis可以做的事情的真实例子.
首先是整页缓存。如果你正在使用服务器端呈现的内容,则不需要为每个单独的请求重新渲染每个页面。使用如Redis这样的缓存,你可以缓存经常请求的内容,从而大大减少请求最多的页面的延迟,并且大多数框架针对Redis缓存页面都有hooks.
简单命令 。
1
2
3
4
|
/
Set
the page that will
last
1
minute
SET
key
"<html>...</html>"
EX 60
// Get the page
GET
key
|
Redis令人耀眼的地方之一就是排行榜。由于Redis在内存中,因此可以非常快速和高效地处理递增和递减。将此与每个请求运行SQL查询比较,性能收益巨大!这与Redis的排序集相结合意味着你可以以毫秒为单位抓取列表中评分最高的项目,而且实现起来非常容易.
简单命令 。
1
2
3
4
5
6
|
//
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
|
我所见的Redis最常见的用途是会话存储。与其他会话存储(如Memcache)不同,Redis可以保留数据,以便在缓存停止的情况下,在重新启动时,所有数据仍然存在。即便不是需要严格持续的任务,此功能仍可以为你的用户省去大量的麻烦。没有人会乐于见到他们的会话被无缘无故随机删掉.
简单命令 。
1
2
3
4
|
//
Set session that will last 1 minute
SET randomHash
"{userId}"
EX 60
//
Get userId
GET randomHash
|
使用Redis可以做的一个不太常见,但非常有用的事情是排队。无论是电子邮件队列还是其他应用程序使用的数据,你都可以在Redis中创建一个高效的队列。任何熟悉堆栈以及会push和pop项目的开发人员都可以轻松自然地使用此功能.
简单命令 。
1
2
3
4
5
6
7
8
9
|
//
Add a Message
HSET messages <
id
> <message>
ZADD due <due_timestamp> <
id
>
//
Recieving Message
ZRANGEBYSCORE due -inf <current_timestamp> LIMIT 0 1
HGET messages <message_id>
//
Delete Message
ZREM due <message_id>
HDEL messages <message_id>
|
Redis在真实世界的最终用法即我将在这篇文章中提出的pub / sub。这是Redis内置的最强大的功能之一;得到的可能是无限的。你可以创建一个实时聊天系统,在社交网络上触发好友请求的通知等等。这个功能是Redis提供的最被低估的功能之一,但功能非常强大,而且使用简单.
简单命令 。
1
2
3
4
|
//
Add a message to a channel
PUBLISH channel message
//
Recieve messages from a channel
SUBSCRIBE channel
|
结论 。
我希望你会喜欢这些Redis在真实世界的使用。虽然这篇文章只抓住了Redis能为你做的事情的表面,但是我希望你能从中获得应如何充分利用Redis的启发.
最后此篇关于Redis 在真实世界的 5 个用法的文章就讲到这里了,如果你想了解更多关于Redis 在真实世界的 5 个用法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在 unsafeDupablePerformIO 的定义( source 、 docs )中,我找到了对唯一的 realWorld# 的引用。所以我想知道所有这些以 # 结尾的函数或值是在哪里定义的?
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题吗? 更新问题,以便 editing this post 提供事实和引用来回答它. 关闭 5 年前。 Improve
在现代 v8 Javascript 中,String.prototype.slice 的算法复杂度是多少? 明确地说,我正在寻找真实世界的实用数据或经验法则。 快速测试 我试图通过在最新的 Chrom
我正在阅读文章 Double-checked locking and the Singleton pattern ,关于如何破坏双重检查锁定,以及 Stack Overflow 上的一些相关问题。 我
Goerzen 等人 present CSV 文件解析器的简单实现,用于向 Real World Haskell 的读者介绍 Parsec 解析组合器库。 这是他们的简洁程序的一个版本: import
ResultBox1->Text = (sin(TextBox1->Text)) * TextBox2->Text 这就是我想要的工作,但我正在处理字符串 我似乎无法转换字符串,进行触发,然后转换回字
我想验证给定的字符串是 URL。匹配文本中的 URL 也很好,但不是必需的。我已经搜索并进行了实验,但到目前为止,我还没有找到可以满足这些要求的东西: 不得接受在被视为链接时会带来安全风险的字符串。例
在第3章,有一个例子叫“MySecond.hs”,我真的不明白是这样的代码: safeSecond :: [a] -> Maybe a 它总是在文件的第一行,删除它不会造成任何麻烦。任何人都可以启发我
我正在尝试使用 HTML Canvas 表示 LED 矩阵的闪烁。对我来说重要的是,每个 LED 的尺寸和它们之间的距离代表它们在现实世界中的真实尺寸(例如,以毫米为单位)。 如果我为一台计算机找到一
根据another question ,现实世界 Haskell 的部分内容现已过时。我只学习了第 5 章,但在将一个简单示例编译为可执行二进制文件时遇到问题。 给出了两个模块: module Sim
我正在尝试通过 mentioned chapter 。在阅读和思考练习时,我遇到了一些困难。 首先,fill 和 nest 函数的签名不应该是 :: Int -> Doc -> String 吗?我认
第 3 章定义了以下递归类型来表示二叉树: data Tree a = Node a (Tree a) (Tree a) | Empty deriv
这个问题不是重复的 A question with the same title already exists ,但 answer在我看来,只部分解决了它,我也对它没有解决的问题感兴趣。 前言 真实世
我是一名优秀的程序员,十分优秀!