Comments (3)
Hey @Memorydoc ,
from the exception name (org.springframework.data.redis.RedisSystemException) I can only assume you are having issue with the Spring Data Redis and not the Lettuce driver itself?
Anyway to understand the issue better we will need more information like a complete stacktrace or a sample of the code that ptoduces this issue.
from lettuce.
I encountered the same problem when upgrading from Spring boot2.3.4 to 2.7.0
The code example is as follows:
@Test
public void test() {
StringBuilder lua = new StringBuilder();
lua.append("local c");
lua.append("\nc = redis.call('get',KEYS[1])");
lua.append("\nif c and tonumber(c) > tonumber(ARGV[1]) then");
lua.append("\nreturn c;");
lua.append("\nend");
lua.append("\nc = redis.call('incr',KEYS[1])");
lua.append("\nif tonumber(c) == 1 then");
lua.append("\nredis.call('expire',KEYS[1],ARGV[2])");
lua.append("\nend");
lua.append("\nreturn c;");
int limitCount = 10;
int limitPeriod = 3;
List<String> keys = new ArrayList<>();
keys.add("kk");
RedisScript<Number> redisScript = new DefaultRedisScript<>(lua.toString(), Number.class);
Number count = stringRedisTemplate.execute(redisScript, keys, String.valueOf(limitCount), String.valueOf(limitPeriod));
System.out.println(count);
}
The debug code enters the execute
method of the DefaultScriptExecutor
class of spring-data-redis
:
public <T> T execute(final RedisScript<T> script, final RedisSerializer<?> argsSerializer,
final RedisSerializer<T> resultSerializer, final List<K> keys, final Object... args) {
return template.execute((RedisCallback<T>) connection -> {
final ReturnType returnType = ReturnType.fromJavaType(script.getResultType());
final byte[][] keysAndArgs = keysAndArgs(argsSerializer, keys, args);
final int keySize = keys != null ? keys.size() : 0;
if (connection.isPipelined() || connection.isQueueing()) {
// We could script load first and then do evalsha to ensure sha is present,
// but this adds a sha1 to exec/closePipeline results. Instead, just eval
connection.eval(scriptBytes(script), returnType, keySize, keysAndArgs);
return null;
}
return eval(connection, script, returnType, keySize, keysAndArgs, resultSerializer);
});
}
In version 2.3.4, the ReturnType is Integer
and IntegerOutPut
will be generated, but in version 2.7.0, the ReturnType is VALUE
and generates ValueOutPut
, resulting in the above error, so I think ValueOutPut
should support the processing of Number
, which can solve this problem.
from lettuce.
@Memorydoc , @ShepherdZFJ ,
Seems to me this is deffinetly an issue with spring-data-redis, perhaps sometihng like spring-projects/spring-data-redis#2908
This project works on the underlying driver and - unless the driver is the problem - there is nothing to be done in Lettuce.
Closing this, please reopen if you have some indications that the issue is in the Lettuce code.
from lettuce.
Related Issues (20)
- Add support to get remaining TTL
- Flaky tests on the CI pipeline
- Improvements to the Redis connection/codec layer
- Distributed Lock with Lettuce HOT 1
- Cursor based operations not working properly with ReadFrom = ANY
- Connection remains in INACTIVE state for prolonged period of time. HOT 1
- Occasionally seeing NoSuchElementException HOT 1
- Seeing ArrayIndexOutOfBoundsException HOT 1
- event loop thread gets blocked during disconnection/reconnection HOT 3
- `resubscribe` logic looks ignoring sharded Pub/Sub (`shardChannels` Set of `PubSubEndpoint`) HOT 5
- CacheManager Not working with RedisCredentialsProviderFactory HOT 4
- enable auto batch flush
- Using Lettuce with Native Images Connection reset HOT 1
- CI is failing since yesterday HOT 1
- Revise the Advanced usage section
- fix: activation command may get retried in a different connection, or failed due to queue full or dangled due to auto flush is false
- Why bitField offset argument is int type?
- ClusterCommand error completeExceptionally cause OOM
- SPUBLISH not working for Reactive/Coroutines client when using pubsub connection HOT 1
- Hexpire and Httl function are not working with the 6.4.0.RELEASE
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lettuce.