草庐IT

java - jedis llen 结果不等于 redis llen

我遇到了一个关于Redis及其Java客户端Jedis的非常奇怪的问题。我在Redis中有两个名为workMQ和backupMQ的列表,当我在redis-cli中执行llenworkMQ时,它返回16。但是,当我使用Jedis在Java代码中执行jedis.llen("workMQ")时,它返回0。但是当新数据通过Java代码运行jedis.lpush("workMQ","data")时,RedisllenworkMQ变为1.为什么jedis.llen("workMQ")无法识别此列表中剩余的16数据项?在出现这个奇怪的问题之前,我用Lua脚本做了rpoplpush操作,如下。eval

lua - Lua 脚本上的 Jedis/Redis SocketTimeout 异常

我们正在使用lua脚本对数据库更新时的数据执行批量删除。Jedis使用管道执行lua脚本。localresult=redis.call('lrange',key,0,12470)fori,kinipairs(result)doredis.call('del',k)redis.call('ltrim',key,1,k)endtry(Jedisjedis=jedisPool.getResource()){Pipelinepipeline=jedis.pipelined();longlen=jedis.llen(table);Stringscript=String.format(DELETE

java - Redis 键被自动删除

我们使用redis作为缓存。在某些情况下,某些key会被删除,而我们找不到原因。我在这个通知上放置了CONFIGSETnotify-keyspace-eventsKEgxe的rediskeyspace/keyevent我正在放置日志。但是我既不能在我的核心日志中也不能在这个redis-logs中找到一些键。他们在RDBMS中有一些数据,所以我们确信这些键一定已经进入了Redis。我们非常迷茫,我们应该根据什么调试它。Redis信息显示它有大约100mb的使用量,这对我来说没问题。如何持久化数据和key。 最佳答案 2可能的原因:客户

transactions - 集群模式下spring data redis是否支持事务(multi,exec)?

我已经在单个REDIS实例中成功地使用multi和exec功能在Redis中实现(并测试)了事务操作。但是,在集群设置中运行的相同代码会出错并显示以下异常消息。我正在使用spring-data-redis-1.8.1.RELEASE和jedis-2.9.0。Exceptioninthread"main"org.springframework.dao.InvalidDataAccessApiUsageException:MUTLIiscurrentlynotsupportedinclustermode.atorg.springframework.data.redis.connection

java - jedis.incr(byte[] key) 的输入

我目前使用的是Jedis2.9.0版,根据RedisJedis文档,方法longjedis.incr(byte[]key)接受字节数组作为其键。问题是,我使用哈希值(MessageDigest.getInstance("MD5"))作为键,但我不确定此命令中允许的键类型/大小。我也不知道在这种情况下这是否是“最佳实践”。有谁知道字节数组可以有多大,并且仍然可以作为此方法中的参数传递? 最佳答案 Redis的键名最长可达512MB,并且是二进制安全的。由于MD5哈希是一个128位整数,它只需要16个字节作为key名称,并且完全在限制之

java - redis.clients.jedis.exceptions.JedisException : Could not get a resource from the pool

redis.properties#jedisPoolConfigredis.minIdle=100redis.maxIdle=500redis.maxTotal=50000redis.maxWaitMillis=10000redis.testOnBorrow=true#jedisPoolredis.host=192.168.13.169redis.port=6379redis.timeout=3000redis.port2=6380#redis-sentinelredis.sentinel=192.168.13.169:26379redis.master=mymasterspring-

java - RedisTemplate execute() 和 opsFpr*() 的不同使用

用Spring操作redis,RedisTemplate的execute()和opsFor*()的区别? 最佳答案 Referencedocument根据该文档,有两个组件:低级抽象和高级抽象。1.execute()方法是Low-LevelAbstractions,用于通过RedisConnection操作redis;2.opsFor*()方法是High-LevelAbstractions,为提供友好的模板类,underlay也使用RedisConnection和execute()。其实这两种方法是一样的。

java - 绝地武士得到陈旧的数据

我们有多次保存key更新值的场景。该值包含设置对象,其中数据在每次操作后更新。问题是get方法总是返回第一次获取的数据,而我们只在服务器重启时获取更新的数据。我们正在使用jedispool默认配置并尝试了多种方法来调试它,但我没有取得任何进展byte[]reply=jedis.get(keyBytes);jedis.setex(keyBytes,expiration,valueBytes);这可能是导致此错误的愚蠢原因,所以请帮助我进一步改进 最佳答案 看起来对各种调用使用相同的输出流导致了这个问题

redis - 用于获取和设置/刷新操作的 Jedis 池配置

我是Redis新手,在我的应用程序中使用Jedis客户端。我经历了几个话题,但没有找到决定性的答案。我有2个问题需要澄清。对于我的生产用途,我想为jedisget操作和set操作设置单独的超时。对于所有设置操作,我想将超时设置为2000毫秒并获取100毫秒。我已经实现了以下配置。JedisPoolConfigpoolConfig=newJedisPoolConfig();poolConfig.setMaxIdle(30);poolConfig.setMinIdle(10);poolConfig.setMaxWaitMillis(2000);jedisPool=newJedisPool(

spring - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'jedisClientPool' defined in class path resource

我写了一个程序来练习redis。但是当我作为JUnit测试运行时,出现了问题:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'jedisClientPool'definedinclasspathresource[spring/applicationContext-redis.xml]:Errorsettingpropertyvalues;nestedexceptionisorg.springframework.beans.NotWritablePropertyExcept