标签: redis

Redis键中冒号的用途是什么?

我正在学习如何将Redis用于我的项目.我没有理解的一件事是在键的名称中使用的冒号究竟是什么.

我看过这样的关键名称:

users:bob
color:blue
item:bag
Run Code Online (Sandbox Code Playgroud)

冒号是否将键分成几类并更快地找到键?如果是这样,在命名键时可以使用多个冒号将它们分解为子类别吗?最后他们是否与在Redis服务器中定义不同的数据库有关?

我已阅读文档,并就此事进行了大量谷歌搜索,但奇怪的是我找不到任何讨论此事的内容.

colon redis key-value-store

69
推荐指数
2
解决办法
2万
查看次数

转储Redis数据库中的所有键/值对

我在Ruby中使用一个名为Ohm的ORM,它在Redis之上运行,我很想知道数据是如何实际存储的.我想知道是否有办法列出Redis数据库中的所有键/值.

任何领导都会在很长一段时间内帮助我(我基本上被困在了).提前致谢!

更新:
使用redis-cli尝试此操作的其他人的注释,使用此:

$ redis-cli keys
* (press * followed by Ctrl-D)
... (prints a list of keys and exits)
$
Run Code Online (Sandbox Code Playgroud)

谢谢@antirez和@hellvinz!

ruby rubygems ohm nosql redis

68
推荐指数
3
解决办法
7万
查看次数

何时使用Redis代替MySQL用于PHP应用程序?

我一直在看Redis.看起来很有趣.但从实际角度来看,在什么情况下使用Redis而不是MySQL?

php mysql redis

68
推荐指数
4
解决办法
5万
查看次数

Redis设置vs hash

在许多Redis教程(例如教程)中,数据存储在一个集合中,但是多个值组合在一个字符串中(即用户帐户可能存储在集合中作为两个条目,"user:1000:username"和"用户:1000:密码").

但是,Redis也有哈希.似乎有一个"user:1000"哈希更有意义,它包含一个"用户名"条目和一个"密码"条目.您只需直接在哈希中访问它们,而不是连接字符串以访问特定值.

那么为什么不使用它呢?这些只是旧教程吗?或者Redis哈希有性能问题吗?

redis

68
推荐指数
2
解决办法
4万
查看次数

在Redis中清空/删除一组?

也许我只是盲目,但我没有在Redis中看到一个显式的set命令,用于清空现有的一组(不清空整个数据库).目前,我正在对集合进行设置差异并将其存储回自身:

redis> SMEMBERS metasyn
1) "foo"
2) "bar"
redis> SDIFFSTORE metasyn metasyn metasyn
(integer) 0
redis> SMEMBERS metasyn
(empty list or set)
Run Code Online (Sandbox Code Playgroud)

但这看起来有点傻......有没有更好的方法呢?

set redis

65
推荐指数
1
解决办法
3万
查看次数

在redis中,如何删除密钥?

我想删除与"user*"匹配的密钥.

我如何在redis命令行中执行此操作?

database redis redis-commands

65
推荐指数
5
解决办法
7万
查看次数

Node.js,Socket.io,Redis pub/sub高容量,低延迟的困难

当连接socket.io/node.js和redis pub/sub以尝试创建由可处理多个传输的服务器事件驱动的实时Web广播系统时,似乎有三种方法:

  1. 'createClient'是一个redis连接并订阅了频道.在socket.io客户端连接上,将客户端加入socket.io会议室.在redis.on("message",...)事件中,调用io.sockets.in(room).emit("event",data)以分发给相关房间中的所有客户端.喜欢如何在socket.io中重用redis连接?

  2. 'createClient'是一个redis连接.在socket.io客户端连接上,将客户端加入socket.io会议室并订阅相关的redis频道.在客户端连接闭包内和收到消息调用client.emit("event",data)时包含redis.on("message",...)以在特定客户端上引发事件.就像在socket.io中使用RedisStore的示例中的答案一样

  3. 使用RedisStore烘焙到socket.io和'广播'从Redis中的单个"调度"通道遵循socketio-spec协议.

Number 1允许为所有客户端处理一次Redis子和相关事件.Number 2为Redis pub/sub提供了更直接的钩子.3号更简单,但几乎无法控制消息传递事件.

但是,在我的测试中,所有连接的客户端都表现出意外的低性能.有问题的服务器事件是尽快发布到redis频道的1,000条消息,以便尽快分发.性能是通过连接客户端的时间来衡量的(socket.io-client基于该日志时间戳到Redis列表中进行分析).

我猜测在选项1中,服务器接收消息,然后顺序将其写入所有连接的客户端.在选项2中,服务器多次接收每个消息(每个客户端订阅一次)并将其写入相关客户端.在任何一种情况下,服务器都不会进入第二个消息事件,直到它被传递给所有连接的客户端.随着并发性的上升,情况显然更加恶化.

这似乎与堆栈功能的感知智慧不一致.我想相信,但我在苦苦挣扎.

这种情况(大量消息的低延迟分布)是不是这些工具的选项(但是?),还是我错过了一个技巧?

publish-subscribe redis low-latency node.js socket.io

65
推荐指数
1
解决办法
3万
查看次数

delayed_jobs vs resque vs beanstalkd?

这是我的需求:

  • Enqueue_in(10.hours,...)(DJ语法很完美.)
  • 兼职工人.(Resque或beanstalkd对此有好处,但不是DJ)
  • 必须每秒处理100个作业的推送和弹出.(我需要进行测试以确保,但我认为DJ无法处理这么多工作)

Resque和beanstalkd不执行enqueue_in.

有一个插件(resque_scheduler)可以做到这一点,但我不确定它是多么稳定.

我们的环境是关于亚马逊的,他们为亚马逊实例免费推出了beanstalkd,这对我们来说是一个加分,但我仍然不确定这里最好的选择是什么.

我们运行rails 2.3但是我们很快就将其加速到rails 3.0.3.

但这里我最好的选择是什么?我错过了另一个更好地完成这项工作的宝石吗?

我觉得我现在唯一可行的选择是resque_scheduler.

编辑:

Sidekiq(https://github.com/mperham/sidekiq)是另一个你应该检查的选项.

ruby-on-rails beanstalkd resque redis

64
推荐指数
3
解决办法
2万
查看次数

MurmurHash - 它是什么?

我一直试图高度了解MurmurHash的作用.

我已经阅读了一个基本的描述,但还没有找到何时使用它的好解释以及原因.我知道它非常快,但想知道更多.

我问了一个相关的问题,关于如何将UUID放入Redis bitset,有人建议使用MurmurHash.它有效,但我想了解风险/收益.

hash redis murmurhash

63
推荐指数
2
解决办法
4万
查看次数

如何使用redis存储和检索字典

# I have the dictionary my_dict
my_dict = {
    'var1' : 5
    'var2' : 9
}
r = redis.StrictRedis()
Run Code Online (Sandbox Code Playgroud)

我如何存储my_dict并使用redis检索它.例如,以下代码不起作用.

#Code that doesn't work
r.set('this_dict', my_dict)  # to store my_dict in this_dict
r.get('this_dict')  # to retrieve my_dict
Run Code Online (Sandbox Code Playgroud)

python redis

62
推荐指数
8
解决办法
7万
查看次数