redis的curd及各种数据类型的存取

Posted 若曦`

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis的curd及各种数据类型的存取相关的知识,希望对你有一定的参考价值。

1. redis使用流程

这是Springboot整合redis的使用步骤

(1) pom.xml中导入redis依赖

<!--导入这个redis依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

(2) 创建实体类,实现序列化接口

如果不实现序列化接口则无法存入redis数据库

(3) Controller中使用Redistemplate



(4) yml中配置redis连接信息

redis一共有16个库,这里0表示默认选择第一个库

(5) 使用postman进行测试

(6) get存入的student

可以看出这时候为nil(也就是为空),这是为什么呢?
因为redis在存入数据的时候会先进行序列化,也就是会在student前面加一串东西用作标记


(7) contorller中get取出redis中的数据

测试,成功取出

2. 增删改查

 @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 增/改
     * @param student
     */
    @PostMapping("/set")
    public void set(@RequestBody Student student)
        redisTemplate.opsForValue().set("student",student);
    

    /**
     * 查
     * @param key
     * @return
     */
    @GetMapping("get/key")
    public Student get(@PathVariable("key") String key)
         return (Student) redisTemplate.opsForValue().get(key);
    

    /**
     * 删
     * @param key
     * @return
     */
    @DeleteMapping("delete/key")
    public boolean delete(@PathVariable("key") String key)
        //删除
        redisTemplate.delete(key);
        //寻找redis中是否有key,返回一个boolean值
        return redisTemplate.hasKey(key);
    

3. redis各种数据类型的存取

(1) String

  /**
     * String类型数据的存入和取出
     */
    @GetMapping("/string")
    public void getString()
        //存
        redisTemplate.opsForValue().set("str","hello,redis");
        //取
        String str = (String) redisTemplate.opsForValue().get("str");
        System.out.println(str);
    

(2) List

  /**
     * List类型数据的存取
     * @return
     */
 @GetMapping("/getList")
    public List<String> getList()
        //ListOperations相当于一根管道,左右两边都可以存取数据
        ListOperations<String,String> listOperations = redisTemplate.opsForList();
        //存
        listOperations.leftPush("list","hello");
        listOperations.rightPush("list","redis");
        //使用range进行取,后面的两个参数类似于subString()的两个参数 指定下标获取
        return listOperations.range("list",0,0); //hello
    

(3) Set

① 无序Set

 /**
     * 无序Set的存取
     */
    @GetMapping("/getSet")
    public void getSet()
        SetOperations<String,String> setOperations = redisTemplate.opsForSet();
        //存
        setOperations.add("set","hello");
        setOperations.add("set","redis");
        //取
        Set<String> str = setOperations.members("set");
    

② 有序Set

/**
     * 有序Set的存取
     */
    @GetMapping("/getZSet")
    public void getZSet()
        ZSetOperations<String,String> zsetOperations = redisTemplate.opsForZSet();
        //存,第三个参数为序号 redis中会根据序号对set集合排序
        zsetOperations.add("zset","hello",1);
        zsetOperations.add("zset","redis",2);
        //取
        Set<String> str = zsetOperations.range("zset",0,1);
        System.out.println(str);
    

(4) HashMap

 /**
     * HashMap的存取
     */
    @GetMapping("/getHash")
    public void getHash()
        //3个参数说明:hashMap的id,hashMap的key和value
        HashOperations<String,String,String> hashOperations = redisTemplate.opsForHash();
        //存
        hashOperations.put("hashMap","hashKey","hello,redis");
        //取
        String str = hashOperations.get("hashMap","hashKey");
        System.out.println(str);
    

以上是关于redis的curd及各种数据类型的存取的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb 数据类型及Mongoose常用CURD转载

Redis的各数据类型的内存占用

初识Redis系列之三:Redis支持的数据类型及使用

redis数据类型和应用场景

系统学习redis之四——redis数据类型之hash类型及操作

Redis 学习 —— 数据类型及操作