# Jackson 3 serializers: JacksonJsonRedisSerializer and GenericJacksonJsonRedisSerializer --- JacksonJsonRedisSerializer: one type, plain JSON --- value serializer: org.springframework.data.redis.serializer.JacksonJsonRedisSerializer userTemplate.opsForValue().set("user:1", new User(1, "Ankur")) $ redis-cli -p 6390 KEYS '*' user:1 $ redis-cli -p 6390 GET user:1 {"id":1,"name":"Ankur"} read back: User[id=1, name=Ankur] (User) --- GenericJacksonJsonRedisSerializer with an allow-list: any type, plus @class --- value serializer: org.springframework.data.redis.serializer.GenericJacksonJsonRedisSerializer jsonTemplate.opsForValue().set("user:2", new User(2, "Ankur")) $ redis-cli -p 6390 GET user:2 {"@class":"com.ankurm.redis.model.User","id":2,"name":"Ankur"} read back: User[id=2, name=Ankur] (User) --- GenericJacksonJsonRedisSerializer with no typing configured --- plain.opsForValue().set("user:3", new User(3, "Ankur")) $ redis-cli -p 6390 GET user:3 {"id":3,"name":"Ankur"} read back: {id=3, name=Ankur} (LinkedHashMap) --- Two different shapes of the same JSON --- $ redis-cli -p 6390 GET user:1 {"id":1,"name":"Ankur"} $ redis-cli -p 6390 GET user:2 {"@class":"com.ankurm.redis.model.User","id":2,"name":"Ankur"}