转自 https://blog.csdn.net/lanfeng_lan/article/details/121152461
添加依赖
<!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <!--<version>2.1.4.RELEASE</version>--> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <!-- fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.68</version> </dependency>
序列化方式设置
@Configuration public class RedisConfig { /** * 设置Redis序列化方式,默认使用的JDKSerializer的序列化方式,效率低,这里我们使用 FastJsonRedisSerializer * @param redisConnectionFactory * @return */ @Bean public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); // key序列化 redisTemplate.setKeySerializer(new StringRedisSerializer()); // value序列化 redisTemplate.setValueSerializer(new FastJsonRedisSerializer<>(Object.class)); // Hash key序列化 redisTemplate.setHashKeySerializer(new StringRedisSerializer()); // Hash value序列化 redisTemplate.setHashValueSerializer(new StringRedisSerializer()); redisTemplate.setConnectionFactory(redisConnectionFactory); return redisTemplate; } }
1:Redis的String数据结构
redisTemplate.opsForValue().set(key, value) //设置当前的key以及value过期时间
redisTemplate.opsForValue().set(key, value, timeout, unit) //设置当前的key以及value值并且设置过期时间
redisTemplate.opsForValue().getAndSet(key, value); //获取原来的key对应的value,并赋予新值 redisTemplate.opsForValue().append(key, value); //在原来value后面拼接新值 redisTemplate.opsForValue().size(key); //获取value的长度 redisTemplate.opsForValue().setIfAbsent(key, value) //重新设置key对应的值,如果存在返回false,否则返回true
Map valueMap = new HashMap(); valueMap.put("valueMap1","map1"); valueMap.put("valueMap2","map2"); valueMap.put("valueMap3","map3"); redisTemplate.opsForValue().multiSet(valueMap); //设置map集合到redis
Map valueMap = new HashMap(); valueMap.put("valueMap1","map1"); valueMap.put("valueMap2","map2"); valueMap.put("valueMap3","map3"); redisTemplate.opsForValue().multiSetIfAbsent(valueMap); //如果对应的map集合名称不存在,则添加否则不做修改
redisTemplate.opsForValue().increment(key, increment);//通过increment(K key, long delta)方法以增量方式存储long值(正值则自增,负值则自减)
redisTemplate.opsForValue().multiGet(keys); //批量获取值 redisTemplate.type(key); //返回传入key所存储的值的类型 redisTemplate.rename(oldKey, newKey); //修改redis中key的名称 redisTemplate.opsForValue().multiGet(keys); //如果旧值key存在时,将旧值改为新值 redisTemplate.type(key); //返回传入key所存储的值的类型
redisTemplate.rename(oldKey, newKey); //修改redis中key的名称 redisTemplate.renameIfAbsent(oldKey, newKey);//如果旧值key存在时,将旧值改为新值
redisTemplate.hasKey(key); //判断是否有key所对应的值,有则返回true,没有则返回false
redisTemplate.delete(key) //删除key
redisTemplate.delete(keys) //批量删除key
redisTemplate.expire(key, timeout, unit); //设置过期时间
redisTemplate.expireAt(key, date); //返回当前key所对应的剩余过期时间
redisTemplate.getExpire(key); //返回剩余过期时间并且指定时间单位
redisTemplate.getExpire(key, unit); //查找匹配的key值,返回一个Set集合类型
redisTemplate.keys(pattern); //返回剩余过期时间并且指定时间单位
redisTemplate.persist(key); //将key持久化保存
redisTemplate.move(key, dbIndex); //将当前数据库的key移动到指定redis中数据库当中