Quelles sont les langues prises en charge par redis et pouvant être utilisées (consultez le site officiel de redis)
#🎜🎜 #
# 🎜🎜#1.1 Utiliser les Jedis
(1) Ajouter une dépendance aux Jedis<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--只能在测试类中使用-->
<scope>test</scope>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.0</version>
</dependency>
public class TestJedis { @Test public void test01(){ //连接redis--必须保证你的redis服务运行远程连接 //该对象把每个redis命令封装成对应的方法 //注意端口号 //xshell中的redis要运行起来,注意防火墙释放端口号,注意配置文件的修改 Jedis jedis=new Jedis("192.168.1.16",6379); //对于字符串操作的命令 String set = jedis.set("k1", "v1"); System.out.println(set); String set1 = jedis.set("k2", "v2"); System.out.println(set1); String set2 = jedis.set("k3", "v3"); System.out.println(set2); //对于hash的操作 jedis.hset("k4","name","小花"); Long hset = jedis.hset("k4", "age", "18"); System.out.println(hset); Map<String ,String> map=new HashMap<>(); map.put("name","小明"); map.put("age","20"); Long k = jedis.hset("k5", map); System.out.println(k); jedis.close(); } }
@Test public void test02(){ //创建连接池的配置类 JedisPoolConfig jedisPoolConfig=new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(20); jedisPoolConfig.setMinIdle(5); jedisPoolConfig.setMaxWait(Duration.ofMillis(3000)); JedisPool jedisPool=new JedisPool(jedisPoolConfig,"192.168.1.16",6379); long start = System.currentTimeMillis(); for (int i = 0; i < 1000; i++) { //从jedis连接池获取资源 Jedis jedis=jedisPool.getResource(); String ping = jedis.ping(); jedis.close();//是否关闭池子 } long end=System.currentTimeMillis(); //是为了比较使用池子还是不使用快,结论是使用池子快 System.out.println("总耗时:"+(end-start)); }
Il y a aussi le port correspondant : 6001 , 6002, 6003, 6004, 6005, 6006, car le port qui a été publié précédemment était en réalité le 10000. Faites attention à ce qui précède deux points avant de pouvoir utiliser l'idée pour la créer avec succès.
@Test public void test03(){ Set<HostAndPort> nodes=new HashSet<>(); nodes.add(new HostAndPort("192.168.227.175",6001)); nodes.add(new HostAndPort("192.168.227.175",6002)); nodes.add(new HostAndPort("192.168.227.175",6003)); nodes.add(new HostAndPort("192.168.227.175",6004)); nodes.add(new HostAndPort("192.168.227.175",6005)); nodes.add(new HostAndPort("192.168.227.175",6006)); JedisCluster jedisCluster=new JedisCluster(nodes); jedisCluster.set("k6", "小老虎和小兔子"); jedisCluster.close(); }
2. SpringBoot intègre redis
Le fonctionnement de redis par Springboot encapsule deux classes StringRedisTemplate et RedisTemplate. RedisTemplate, StringRedisTemplate ne peut stocker que les types de chaînes et ne peut pas stocker les types d'objets. Si vous souhaitez utiliser StringRedisTemplate pour stocker des objets, vous devez convertir l'objet en chaîne json.
springboot fournit deux classes d'outils de modèles, StringRedisTemplate et RedisTemplate, lors de l'intégration de Redis.
2.1 StringRedisTemplate
(1) Présentation des dépendances associées
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
(2) Injection StringRedisTemplate objet de cette classe
@Autowired private StringRedisTemplate redisTemplate;
(3) Utiliser StringRedisTemplate
Cette classe gère les opérations sur chaque type de données séparément L'objet interne correspondant la classe est scellée.Il n'y aura pas de caractères tronqués ici car les méthodes de sérialisation et de désérialisation ont été modifiées en type String.
@Autowired private StringRedisTemplate stringRedisTemplate; @Test public void test01(){ //对hash类型的操作 HashOperations<String, Object, Object> forHash = stringRedisTemplate.opsForHash(); forHash.put("k1","name","张三"); forHash.put("k1","age","15"); Map<String,String> map=new HashMap<>(); map.put("name","李四"); map.put("age","25"); forHash.putAll("k36",map); Object o = forHash.get("k1", "name"); System.out.println(o); Set<Object> k1 = forHash.keys("k1"); System.out.println(k1); List<Object> k11 = forHash.values("k1"); System.out.println(k11); //获取k1对于的所有的field和value Map<Object, Object> k12 = forHash.entries("k1"); System.out.println(k12); } @Test void contextLoads() { //删除指定的key // stringRedisTemplate.delete("k"); //查看所有的key //stringRedisTemplate.keys("k"); //是否存在指定的key //stringRedisTemplate.hasKey("k"); //对字符串数据类型的操作ValueOperations ValueOperations<String, String> forValue = stringRedisTemplate.opsForValue(); //存储字符串类型--key value long uint setex() forValue.set("k1","张三",30, TimeUnit.SECONDS); //等价于setnx 存入成功返回true ,失败返回false Boolean absent = forValue.setIfAbsent("k11", "李四", 30, TimeUnit.SECONDS); System.out.println(absent); //append拼接 Integer append = forValue.append("k11", "真好看"); String k11 = forValue.get("k11"); System.out.println(k11); }
2.2 RedisTemplate
Il y aura des caractères tronqués ici car ses méthodes de sérialisation et de désérialisation sont par défaut JDK.@SpringBootTest class SbredisApplicationTests02 { //当你存储的value类型为对象类型使用redisTemplate //存储的value类型为字符串。StringRedisTemplate 验证码 @Autowired private RedisTemplate redisTemplate; @Test public void test01(){ //必须认为指定序列化方式 redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class)); //对String类型操作类 ValueOperations forValue = redisTemplate.opsForValue(); //redis中key和value都变成了乱码 //key和value都没有指定序列化方式,默认采用jdk的序列化方式 forValue.set("k1","张三"); //value默认采用jdk,类必须实现序列化接口 forValue.set("k44",new User(1,"haha",12)); } }
@Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); RedisSerializer<String> redisSerializer = new StringRedisSerializer(); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setConnectionFactory(factory); //key序列化方式 template.setKeySerializer(redisSerializer); //value序列化 template.setValueSerializer(jackson2JsonRedisSerializer); //value hashmap序列化 filed value template.setHashValueSerializer(jackson2JsonRedisSerializer); template.setHashKeySerializer(redisSerializer); return template; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!