Rumah >pangkalan data >Redis >Bagaimanakah Java SpringBoot mengendalikan Redis?
spring Boot menyediakan pakej komponen untuk penyepaduan Redis: spring. -boot-starter-data-redis, yang bergantung pada spring-data-redis dan salad.
Selain itu, terdapat dua butiran kecil di sini:
Dalam era Spring Boot 1.x, lapisan bawah spring-data-redis menggunakan Jedis; era 2.x Digantikan dengan Lettuce.
Lettuce bergantung pada commons-pool2
<!-- springboot整合redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 使用 lettuce 时要加这个包;使用 jedis 时则不需要。--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
## Redis 服务器地址 spring.redis.host=localhost ## Redis 服务器连接端口 spring.redis.port=6379 ## Redis 数据库索引(默认为 0) spring.redis.database=0 ## 以下非必须,有默认值 ## Redis 服务器连接密码(默认为空) spring.redis.password= ## 连接池最大连接数(使用负值表示没有限制)默认 8 spring.redis.lettuce.pool.max-active=8 ## 连接池最大阻塞等待时间(使用负值表示没有限制)默认 -1 spring.redis.lettuce.pool.max-wait=-1 ## 连接池中的最大空闲连接 默认 8 spring.redis.lett uce.pool.max-idle=8 ## 连接池中的最小空闲连接 默认 0 spring.redis.lettuce.pool.min-idle=0
. "Hello Redis"
Operasi:
//解决中文乱码问题 @Configuration public class RedisConfig { @Bean public RedisTemplate redisTemplateInit(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); //设置序列化Key的实例化对象 redisTemplate.setKeySerializer(new StringRedisSerializer()); //设置序列化Value的实例化对象 redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); /** * * 设置Hash类型存储时,对象序列化报错解决 */ redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } }
专有操作 | 说明 |
---|---|
ValueOperations | string 类型的数据操作 |
ListOperations | list 类型的数据操作 |
SetOperations | set 类型数据操作 |
ZSetOperations | zset 类型数据操作 |
HashOperations | map 类型的数据操作 |
Users users = new Users(); users.setId(2); users.setUsername("李四2"); redisTemplate.opsForValue().set("user:2", JSON.toJSONString(users)); //存的时候序列化对象 String u = redisTemplate.opsForValue().get("user:2"); //redis 只能返回字符串 System.out.println("u="+ JSON.parseObject(u,Users.class)); //使用JSON工具反序化成对象
Jika kebergantungan spring-boot-starter-web tidak diperkenalkan dalam springboot, anda perlu menambah kebergantungan jackson.
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency>
5. SpringBoot mengendalikan rentetan String
Unit masa redis yang biasa digunakan
MINIT: Minit
SAAT: Saat
DAYS: Days//给user对象设置10分钟过期时间
redisTemplate.opsForValue().set("user:1", JSON.toJSONString(users),10,TimeUnit.MINUTES );
b Padamkan data
//删除键 redisTemplate.delete(key); //判断键是否存在 boolean exists = redisTemplate.hasKey(key);
@Test public void testHash() { String key = "tom"; HashOperations<String, Object, Object> operations = redisTemplate.opsForHash(); operations.put(key, "name", "tom"); operations.put(key, "age", "20"); String value= (String) operations.get(key,"name"); System.out.println(value); }
Menurut kes ujian di atas, didapati tiga parameter perlu dilalui apabila Hash ditetapkan, yang pertama ialah kunci, yang kedua ialah medan, dan yang ketiga ialah nilai yang disimpan. Secara umumnya, Kunci mewakili satu set data, medan ialah atribut yang berkaitan dengan kunci, dan nilai ialah nilai yang sepadan dengan atribut.
7. SpringBoot mengendalikan jenis koleksi Senarai
/** * 测试List * leftPush 将数据添加到key对应的现有数据的左边,也就是头部 * leftPop 取队列最左边数据(从数据库移除) * rightPush 将数据添加到key对应的现有数据的右边,也就是尾部 */ @Test public void testList() { final String key = "list"; ListOperations<String,Object> list = redisTemplate.opsForList(); list.leftPush(key, "hello"); list.leftPush(key, "world"); list.leftPush(key, "goodbye"); Object mete = list.leftPop("list"); System.out.println("删除的元素是:"+mete); //删除 goodbye String value = (String) list.leftPop(key); System.out.println(value.toString()); // range(key, 0, 2) 从下标0开始找,找到2下标 List<Object> values = list.range(key, 0, 2); for (Object v : values) { System.out.println("list range :" + v); } } }
Pelaksanaan Senarai Redis ialah senarai terpaut dua hala, yang boleh menyokong carian terbalik dan traversal, menjadikannya lebih mudah untuk dikendalikan Walau bagaimanapun, ia membawa beberapa overhed memori tambahan, banyak pelaksanaan dalam Redis, termasuk menghantar baris gilir penimbal, dsb. Struktur data ini juga digunakan.
8. SpringBoot mengendalikan jenis koleksi Set
/** * 测试Set */ @Test public void testSet() { final String key = "set"; SetOperations<String,Object> set = redisTemplate.opsForSet(); set.add(key, "hello"); set.add(key, "world"); set.add(key, "world"); set.add(key, "goodbye"); Set<Object> values = set.members(key); for (Object v : values) { System.out.println("set value :" + v); } Boolean exist = set.isMember(key,"hello") //判断是否存在某个元素 operations.move("set", "hello", "setcopy"); //把set集合中的hello元素放到setcopy 中 } }
9. SpringBoot mengendalikan jenis koleksi ZSet
Atas ialah kandungan terperinci Bagaimanakah Java SpringBoot mengendalikan Redis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!