Spring data redis

目录

目标:学会如何在springboot中操作redis

一、导入依赖

二、redis配置

三、测试

字符串类型:

添加元素:

获取元素

添加元素并设置有效时间

只有key不存在时设置key的值

Hash类型

设置元素

获取存储在哈希表中指定字段的值

删除存储在哈希表中指定字段的值

获取哈希表中所有字段

获取哈希表中所有值

获取哈希表中所有字段和值

List

将一个或者多个值插入到列表头部

取指定范围内的元素

移除并获取列表最后一个元素

获取列表长度

移出并获取列表的最后一个元素,如果列表没有元素会阻塞直到超时或者发现可弹出元素为止

集合set

添加元素

返回集合中所有成员

获取集合中的成员数

返回所有给定集合的交集

返回所有给定集合的并集

返回所有给定集合差集

移除元素中一个或者多个成员

有序结合 sorted set

添加元素

通过索引区间获取指定元素

对指定元素的分数加加上增量increment

移除元素


目标:学会如何在springboot中操作redis

一、导入依赖

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

二、redis配置

spring:
  application:
    name: springdataredis_demo
  #Redis相关配置
  redis:
    host: localhost
    port: 6379
    #password: 123456
    database: 0 #操作的是0号数据库
    jedis:
      #Redis连接池配置
      pool:
        max-active: 8 #最大连接数
        max-wait: 1ms #连接池最大阻塞等待时间
        max-idle: 4 #连接池中的最大空闲连接
        min-idle: 0 #连接池中的最小空闲连接

三、测试

字符串类型:

添加元素:

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 操作String类型数据
     */
    @Test
    public void testString(){
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("city","beijing");
    }

发现redis库中key和value前面都有一串字符,这是因为key和value被默认序列化了

 添加序列化配置:

package com.itheima.config;

import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * Redis配置类
 */

@Configuration
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {

        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        //设置key的序列化器
        //默认的Key序列化器为:JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //设置hash类型中key的序列化器
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(connectionFactory);

        return redisTemplate;
    }

}

setHashKeySerializer中的key指的是field字段:

重新测试,key值正常,value值不用管,java代码获取时会反序列化

获取元素

String city = (String)valueOperations.get("city");
System.out.println("city:"+city);

 

添加元素并设置有效时间

set(K var1, V var2, long var3, TimeUnit var5):

参数一:key

参数二: value

参数三:有效时间

参数四:有效时间单位

valueOperations.set("city2","suzhou",10l,TimeUnit.SECONDS);

只有key不存在时设置key的值

Boolean aBoolean = valueOperations.setIfAbsent("city3", "suzhou");

Hash类型

 

设置元素

void put(H var1, HK var2, HV var3);

第一个参数为key,第二个参数为field,第三个参数为value

        HashOperations hashOperations = redisTemplate.opsForHash();

        //存值
        hashOperations.put("002","name","xiaoming");
        hashOperations.put("002","age","20");
        hashOperations.put("002","address","bj");

获取存储在哈希表中指定字段的值

HV get(H var1, Object var2);

第一个参数为key,第二个参数为field

        //取值
        String age = (String) hashOperations.get("002", "age");

删除存储在哈希表中指定字段的值

Long delete(H var1, Object... var2);

第一个参数为key,第二个参数为field,可以是多个

获取哈希表中所有字段

        //获得hash结构中的所有字段
        Set keys = hashOperations.keys("002");
        for (Object key : keys) {
            System.out.println(key);
        }

获取哈希表中所有值

        //获得hash结构中的所有值
        List values = hashOperations.values("002");
        for (Object value : values) {
            System.out.println(value);
        }

获取哈希表中所有字段和值

Map entries = hashOperations.entries("002");

List

将一个或者多个值插入到列表头部

        ListOperations listOperations = redisTemplate.opsForList();

        //存值
        listOperations.leftPush("mylist","a");

取指定范围内的元素

        //取值
        List<String> mylist = listOperations.range("mylist", 0, -1);

移除并获取列表最后一个元素

             //出队列
            String element = (String) listOperations.rightPop("mylist");

获取列表长度

        //获得列表长度 llen
        Long size = listOperations.size("mylist");

移出并获取列表的最后一个元素,如果列表没有元素会阻塞直到超时或者发现可弹出元素为止

V rightPop(K var1, long var2, TimeUnit var4);

第一个参数为key,第二个参数为超时时间,第三个参数为时间单位

集合set

添加元素

         SetOperations setOperations = redisTemplate.opsForSet();

        //存值
        setOperations.add("myset","a","b","c","a");

返回集合中所有成员

        //取值
        Set<String> myset = setOperations.members("myset");

获取集合中的成员数

Long size = setOperations.size("myset");

返回所有给定集合的交集

        setOperations.add("myset","a","b","c","d");
        setOperations.add("myset2","e","f","a","b");
        Set <String>intersect = setOperations.intersect("myset", "myset2");

输出结果

 

返回所有给定集合的并集

Set<String> union = setOperations.union("myset", "myset2");

返回所有给定集合差集

Set<String> difference = setOperations.difference("myset", "myset2");

移除元素中一个或者多个成员

Long remove = setOperations.remove("myset", "a", "b");

有序结合 sorted set

添加元素

        ZSetOperations zSetOperations = redisTemplate.opsForZSet();

        //存值
        zSetOperations.add("myZset","a",10.0);

通过索引区间获取指定元素

        //取值
        Set<String> myZset = zSetOperations.range("myZset", 0, -1);

对指定元素的分数加加上增量increment

         //修改分数
        zSetOperations.incrementScore("myZset","b",20.0);

移除元素

        //删除成员
        zSetOperations.remove("myZset","a","b");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值