Cannot use Jedis when in Multi. Please use JedisTransaction instead.
当在程序中遇到这个异常时,有可能是返回的缓存对象序列化失败。
例子:
@CachePut(value = "emchat", key = "'Emchat:' + #emchatMsg.msgFrom+#emchatMsg.msgDate")
public Emchat[] saveEmchatInRedis(EmchatMsg emchatMsg){
return EmchatUtils.convertEmchatMsgStr(emchatMsg);
}
运行此方法时会报:Cannot use Jedis when in Multi. Please use JedisTransaction instead.
但是换成:
@CachePut(value = "emchat", key = "'Emchat:' + #emchatMsg.msgFrom+#emchatMsg.msgDate",condition="#result != null")
public String saveEmchatInRedis(EmchatMsg emchatMsg){
if(null!=emchatMsg){
return emchatMsg.getMsgContent();
}
return null;
}
就可以运行成功,说明缓存的对象没有进行处理成能缓存的对象(配置里没有支持数组处理)。
配置如下:
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
c:template-ref="redisTemplate" p:defaultExpiration="14400"/>
<bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="usePool" value="true"/>
<property name="hostName" value="${redis.host}"/>
<property name="port" value="${redis.port}"/>
<property name="database" value="${redis.database}"/>
</bean>
<bean id="jedisClient" class="redis.clients.jedis.Jedis" c:host="${redis.host}"></bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnFactory">
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
</property>
<property name="stringSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
</property>
<property name="hashKeySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
</property>
<property name="hashValueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
</property>
</bean>
<cache:annotation-driven proxy-target-class="false"/>
相关推荐
jedis.auth("192.168akeiekekKKDJEikekEJkeu^&&%%$&#*($#&^$&^#$*((BNGGyjekeuh{}jejekekej:"); ping(jedis); hashBytesSave(jedis); hashBytesGet(jedis); // ListCommandsTest jedis.close();...
java.lang.NoSuchMethodError: redis.clients.jedis.ScanResult.getStringCursor()Ljava/lang/String; at org.crazycake.shiro.WorkAloneRedisManager.keys(WorkAloneRedisManager.java:149) at org.crazycake....
jedis-2.0 api.jedis-2.0 api.
String value = jedis.get("key"); } finally { jedis.close(); jedisPool.close(); } ``` 总结来说,"jedis-3.3.0.jar"和"commons-pool2-2.9.0.jar"的结合使用,为Java开发者提供了高效、稳定的Redis连接和资源...
jedis-2.8.0.jar 、jedis-2.1.0.jar 资源可靠 edis-2.8.0.jar 、jedis-2.1.0.jar 资源可靠 jedis-2.8.0.jar 、jedis-2.1.0.jar 资源可靠 jedis-2.8.0.jar 、jedis-2.1.0.jar 资源可靠
Pipeline pipeline = jedis.pipelined(); for (int i = 0; i ; i++) { pipeline.set("key" + i, "value" + i); } pipeline.sync(); ``` 在开发过程中,jedis-3.0.0-javadoc.jar和jedis-3.0.0-sources.jar可以帮助...
jedis-2.8.0.jar
jedis-2.4.1.jar、redis.clients-3.0.1.jar、jedis-3.0.0.jar 全量包,可用!
jedis5.1.0.jar
Jedis是Java开发人员用于操作Redis数据库的一个非常重要的开源客户端库。Redis是一个高性能的键值存储系统,常被用作数据库、缓存和消息代理。Jedis 2.4.2是该库的一个稳定版本,提供了对Redis服务器各种功能的全面...
import redis.clients.jedis.JedisPoolConfig; public class RedisExample { private static JedisPool pool; static { JedisPoolConfig config = new JedisPoolConfig(); // 设置最大连接数、超时时间等配置 ...
3. 事务处理:`multi`开始一个事务,然后添加一系列命令,最后通过`exec`执行所有命令。 4. 发布订阅:使用`publish`发送消息,`subscribe`或`psubscribe`订阅频道或模式。 5. 关闭连接:操作完成后,记得关闭Jedis...
jedis.multi(); jedis.set("key1", "value1"); jedis.set("key2", "value2"); List<Object> results = jedis.exec(); ``` 7. **发布订阅** Redis还提供了消息发布订阅功能,你可以创建一个`JedisPubSub`订阅...
- 执行Redis命令,例如`jedis.set("key", "value")`来设置键值对。 - 关闭资源,确保每次操作后释放连接,避免资源泄露。 4. Jedis的优化: - 配置合理的连接池参数,如最大空闲连接数、最小空闲连接数、最大...
jedis.multi(); jedis.set("key1", "value1"); jedis.set("key2", "value2"); List<Object> results = jedis.exec(); ``` 此外,Jedis还支持Redis的其他数据结构,如哈希(Hash)、集合(Set)和有序集合(Sorted ...
* 批量设置值:使用 `mset` 方法可以批量设置多个值,例如 `jedis.mset("name", "minxr", "jarorwar", "aaa");` 将设置多个值。 * 批量获取值:使用 `mget` 方法可以批量获取多个值,例如 `jedis.mget("name", ...
jedis.multi(); jedis.set("key1", "value1"); jedis.set("key2", "value2"); List<Object> results = jedis.exec(); ``` 5. 发布与订阅: ```java JedisPubSub subscriber = new JedisPubSub() { @Override ...
标题 "Jedis所需要的jar包.zip" 提供了一个关键信息,那就是我们要关注的是Jedis的依赖库。Jedis是一个Java客户端,用于连接并操作Redis,一个高性能的键值数据存储系统。Redis广泛应用于缓存、消息队列、分布式计算...
jedis-jedis-3.5.0.tar