草庐IT

redis-test

全部标签

node.js - 我如何将值设置为 redis 中特定键的列表?

我必须检查我是否可以将expire放在一个对键有值(value)的列表中。为此,我可以执行以下操作。rpushmylist123>prints123setkeymylist>prints"ok"expirekey5>prints"(integer)1"这只会使key和mylist之间的连接过期getkey>prints(nil)将导致null。但是列表(这里是我的列表)存在lrangemylist0-1>prints"123"打印列表中的所有值。我希望销毁list。我如何在命令行或nodeJS中执行此操作? 最佳答案 您正在将键“k

redis - 如何知道redis中的同步过程是否已经完成?

似乎redis服务器之间同步数据的唯一方法就是使用命令slaveof,但是如何知道数据是否已经复制成功呢?我的意思是,我希望在同步完成后立即收到通知。看了一些redis的资源代码,主要是replication.c,没找到官方的。目前我知道的唯一方法是使用redis命令info,并通过轮询检查特定标志,这看起来很糟糕。有没有更好的方法来做到这一点? 最佳答案 您正在尝试的方式,即slaveof,是在Redismaster和Redisslave之间同步数据。每当有数据写入master,就会同步到slave。因此,从技术上讲,同步永远不会

redis - Redis集群如何启动一定数量的节点

要在Redis中创建和启动集群,我在里面使用create-cluster.sh文件/redis-3.04/utils/create-cluster通过使用它,我可以通过更改以下内容来创建任意数量的节点:设置PORT=30000TIMEOUT=2000NODES=10REPLICAS=1.我想知道我是否可以在开始时创建例如10个节点(5个主节点和5个从节点),但只启动4个主节点和4个从节点(相遇并加入)。提前致谢。 最佳答案 是的。如果现有集群的负载增加,您可以添加更多节点。基本步骤是:启动新的redis实例-假设您想再添加2个主服务

javascript - 在 Express 路由中使用 redis

我只想能够在一个路由中的键中存储一个值/api/foo?redisKey="1"(setvalueforid=1)然后我想在另一个路由中获取值。/api/bar?redisKey="1"(getvalueforid=1)但是,redis是异步的,所以你必须等待它连接client.on('connect',function(){//performredisoperations});我不确定如何在我的路由器中同步它。 最佳答案 我假设您使用的是redis为您的客户端库。在您的快速路由文件中,您不希望在每个请求期间都创建连接。相反,您将在

node.js - 如何在 Redis 中的对象中搜索值?

我是Redis和Nodejs的新手,我看过this教程,我正在尝试按名称搜索用户,这是对象,当我传递id时从redis返回:{first_name:'‪john',last_name:'doe',email:'john@gmail.com',phone:'543313305',id:'user001'}这是搜索的功能:app.post('/user/search',function(req,res,next){letid=req.body.id;client.hgetall(id,function(err,obj){if(!obj){res.render('searchusers',{

node.js - 如何将所有redis记录传递给查看?

我想将所有记录从Redis传递到View。我认为我对redis值做错了,因为我无法将它推送到数组或对象。我试过这样:app.get('/',function(req,res,next){varitems=[];client.keys('*',function(err,obj){for(vari=0,len=obj.length;i当我控制台记录我得到的值时for(vari=0,len=obj.length;i值显然是一个对象...我需要对其值进行for循环吗?或者也许有更简单的方法。 最佳答案 那是因为你正在进行异步调用,试试这个代

redis - 实例化新的 redis-server (Linux)

我正在我的设置中实例化一个新的redis服务器(目前它只运行一个)。其中一个步骤是在/etc/init.d/中复制redis-server并为新实例配置它。具体来说,我正在更改脚本中DAEMON_ARGS、NAME、DESC和PIDFILE的值。这是代码:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/bin/redis-serverDAEMON_ARGS=/etc/redis/redis-2.confNAME=redis2-serverDESC=redis2-serverRUND

python - 当 2 个不同的窗口访问同一个键时,为什么 Redis 返回 2 个不同的类型?

我正在使用Python和redis-pyPython客户端与同一个Redis通信,它由RedisLabs作为Redis(e)Cloud提供。在终端中,检索一个键并将值作为字符串类型返回。而当我在我的IDE中运行一个代码文件时,相同的代码返回一个字节对象。我不明白为什么他们返回不同的类型。我屏蔽了Redis主机和端口的详细信息,但它们访问的是同一个Redis,而且我在截取这两个屏幕截图之间没有做任何更改。 最佳答案 这不是redis的问题,而是Py2和Py3的区别。Python3.0usestheconceptsoftextand(b

redis - 杰迪斯连接异常 : Unexpected end of stream error

我正在尝试执行rpush操作并遇到以下错误:redis.clients.jedis.exceptions.JedisConnectionException:Unexpectedendofstream.atredis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:199)~[jedis-2.9.0.jar:na]atredis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40)~[jedis-2.9.0.jar:na]atredis

lua - Redis 链式命令

我想知道将一系列命令链接在一起以便它们在返回最终结果之前都在Redis上执行的最佳方法是什么?我所有的数据都存储在集合中。data1=[a,b,c,d,e]data2=[b,c]我将如何获取data1和data2的交集(result=b,c),然后对结果调用SRANDMEMBER?在一个系列中它看起来像:redis>SINTERdata1data2redis>SRANDMEMBER当然可以将其他操作链接在一起,例如SDIFF和SADD,但从交叉点中选择随机项目似乎是最简单的示例。我尝试创建一个lua脚本,但当我尝试执行以下代码时收到消息“Luaredis()命令参数必须是字符串或整数”