RedisTemplate几个方法的用法

RedisTemplate几个方法的用法

  • RedisTemplate封装了lettuce
  • Redis支持五种数据类型:

    1.String(字符串)
    2.Hash(哈希)
    3.List(列表)
    4.Set(集合)
    5.zset(有序集合)
  • spring集成redis的RedisTemplate,也分别提供的对这些数据类型的操作。

    spring引用redis需要添加依赖,在项目根目录下的pom.xml里加入下方代码,版本号需要自己检查。

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>
    spring-boot-starter-data-redis
    </artifactId>
    <version>2.0.4.RELEASE</version>
    </dependency>


    导入依赖后需要在application.properties里加入redis的配置信息,格式像这样按实际情况修改
    spring.redis.host=localhost
    spring.redis.port=6379
    spring.redis.database=0

    测试连通性
    @Component
    public class RedisTemplateTest {
    @Autowired
    RedisTemplate redisTemplate;
    @PostConstruct
    public void get() {
    redisTemplate.opsForValue().set(“ping”,”pong”);
    System.out.println(redisTemplate.opsForValue().get(“ping”));
    }
    }
  • RedisTemplate中对几种redis的数据类型的常用操作

    redisTemplate.opsForValue()
    redisTemplate.opsForHash();//操作hash
    redisTemplate.opsForList();//操作list
    redisTemplate.opsForSet();//操作set
    redisTemplate.opsForZSet();//操作有序set

    redisTemplate.opsForValue().set("name","tom");
    redisTemplate.opsForValue().get("name");  
    

    //输出结果为tom

    redisTemplate.opsForValue().set("name","tom",10,TimeUnit.SECONDS);
    redisTemplate.opsForValue().get("name");
    

    //由于设置的是10秒失效,十秒之内查询有结果,十秒之后返回为null

    redisTemplate.opsForValue().set("key1","hello world");
    redisTemplate.opsForValue().set("key1","redis", 6);
    System.out.println(redisTemplate.opsForValue().get("key1"));
    

    //结果:hello redis

    System.out.println(redisTemplate.opsForValue().setIfAbsent("key1","value1"));
    

    //false key1之前已经存在

    System.out.println(redisTemplate.opsForValue().setIfAbsent("key2","value2"));
    

    //true key2之前不存在

    Map<String,String> maps = new HashMap<String, String>();
    maps.put("key1","value1");
    maps.put("key2","value2");
    maps.put("key3","value3");
    redisTemplate.opsForValue().multiSet(maps);
    List<String> keys = new ArrayList<String>();
    keys.add("key1");
    keys.add("key2");
    keys.add("key3");
    System.out.println(redisTemplate.opsForValue().multiGet(keys));
    redisTemplate.opsForValue().set("key1","value");
    System.out.println(redisTemplate.opsForValue().getAndSet("key1","value2"));
    System.out.println(redisTemplate.opsForValue().get("key1"));
    long stringValueLong = redisTemplate.opsForValue().increment("longValue",1);   
    System.out.println("通过increment(K key, long delta)方法以增量方式存储long值:" + stringValueLong);  
    

    //key不存在则创建key并自增增量,已存在则直接自增增量

  • redisTemplate.opsForValue().increment(key,value)可以实现类似浏览数记录、点赞数记录的功能。key不存在则创建key并自增增量,已存在则直接自增增量.

  • redisTemplate.opsForValue().set(key,value,超时时长, 超时时长单位)这个方法则可以用来实现期限优惠券、设置token过期时间等功能。
  • redis对过期键的三种清除策略
    惰性删除:当读写到一个过期key时自动删除,可能会导致内存被大量过期key占满溢出
    定时删除:为key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除,可能会消耗大量CPU资源
    定期删除:每隔一段时间执行一次或内存占用达到设置的值时定期操作,随机扫描一定数量的Key,删除其中的过期数据。这种方法对资源消耗较少同时也保证了redis内存占用合理。
# redis
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×