Provides support to increase developer productivity in Java when using Redis, a key-value store. Uses familiar Spring concepts such as a template classes for core API usage and lightweight repository style data access.
Specially on larger structures, when you need to update a value many times, this behavior put a lot of pressure on the DB.
Each save on existing keys executes (setting TTL as well):
"DEL" "key""HMSET" "key" "_class" "something" "id" ..."EXPIRE" "key" "259200"
Another place where DEL is used that could be substituted by UNLINK is when cleaning the secondary indexes on the ExpirationListener:
org.springframework.data.redis.core.RedisKeyValueAdapter.MappingExpirationListener#onMessage
I know from Redis 6 on we can configure to do DEL as UNLINK, however this would affect all applications. Would be useful to provide configuration for using DEL or UNLINK
The versions where this is observed:
<spring.boot.version>2.6.2</spring.boot.version><artifactId>redisson-spring-boot-starter</artifactId><redisson.version>3.16.7</redisson.version>
On update intensive applications, where CrudRepository.save/saveAll is called many times on already existing keys, the current implementation uses DEL command before SET, and this puts some pressure on the DB since is blocking command. E.g. https://github.com/spring-projects/spring-data-redis/blob/485bcad1108cdcb250157dbbc1bdad8c7fcac4af/src/main/asciidoc/reference/redis-repositories.adoc#replace-existing
Specially on larger structures, when you need to update a value many times, this behavior put a lot of pressure on the DB. Each save on existing keys executes (setting TTL as well):
"DEL" "key"
"HMSET" "key" "_class" "something" "id" ...
"EXPIRE" "key" "259200"
Another place where DEL is used that could be substituted by UNLINK is when cleaning the secondary indexes on the ExpirationListener: org.springframework.data.redis.core.RedisKeyValueAdapter.MappingExpirationListener#onMessage
I know from Redis 6 on we can configure to do DEL as UNLINK, however this would affect all applications. Would be useful to provide configuration for using DEL or UNLINK
The versions where this is observed:
<spring.boot.version>2.6.2</spring.boot.version>
<artifactId>redisson-spring-boot-starter</artifactId>
<redisson.version>3.16.7</redisson.version>