Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Substitute/configure DEL for UNLINK on respository.save implementations #2294

Open
gjafachini opened this issue Mar 30, 2022 · 1 comment
Open
Labels
status: ideal-for-contribution An issue that a contributor can help us with type: enhancement A general enhancement

Comments

@gjafachini
Copy link

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>

@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label Mar 30, 2022
@mp911de mp911de added type: enhancement A general enhancement status: ideal-for-contribution An issue that a contributor can help us with and removed status: waiting-for-triage An issue we've not yet triaged labels Apr 4, 2022
@JunggiKim
Copy link

I want to contribute to this issue
Can you give me a direction?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: ideal-for-contribution An issue that a contributor can help us with type: enhancement A general enhancement
Projects
None yet
Development

No branches or pull requests

4 participants