Add redis: Boot 4.1 + Spring Data Redis 4.1, the JDK-serialisation default vs Jackson 3 serializers, @RedisHash TTL and keyspace events, @RedisListener, and Redis as the Spring cache

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01B38FGKKam5SCGgwgduVAh3
This commit is contained in:
Claude
2026-09-21 15:46:55 +00:00
parent 8cdfcd4d8d
commit b0c39a8d4c
60 changed files with 2900 additions and 1 deletions
+61
View File
@@ -0,0 +1,61 @@
# @RedisHash and CrudRepository: the keys Spring Data Redis creates
--- Save two people ---
people.save(new Person("1", "Ankur", "Mhatre", 40))
people.save(new Person("2", "Asha", "Mhatre", 38))
--- Every key it created ---
$ redis-cli -p 6390 KEYS '*' | sort
person
person:1
person:1:idx
person:2
person:2:idx
person:lastName:Mhatre
--- The entity is a hash ---
$ redis-cli -p 6390 --no-raw TYPE person:1
hash
$ redis-cli -p 6390 --no-raw HGETALL person:1
1) "_class"
2) "com.ankurm.redis.hash.Person"
3) "age"
4) "40"
5) "firstName"
6) "Ankur"
7) "id"
8) "1"
9) "lastName"
10) "Mhatre"
--- The keyspace is a set of ids ---
$ redis-cli -p 6390 SMEMBERS person | sort
1
2
--- The @Indexed field is a set per value ---
$ redis-cli -p 6390 SMEMBERS person:lastName:Mhatre | sort
1
2
--- And each entity remembers which index sets it is in ---
$ redis-cli -p 6390 SMEMBERS person:1:idx | sort
person:lastName:Mhatre
--- What the repository returns ---
people.findById("1") = Person[id=1, Ankur Mhatre, age=40]
people.count() = 2
people.findByLastName("Mhatre") = 2 results
--- Delete one, and look again ---
people.deleteById("1")
$ redis-cli -p 6390 KEYS '*' | sort
person
person:2
person:2:idx
person:lastName:Mhatre
$ redis-cli -p 6390 SMEMBERS person:lastName:Mhatre | sort
2
$ redis-cli -p 6390 SMEMBERS person | sort
2