IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot整合redis -> 正文阅读

[Java知识库]springboot整合redis

简单测试步骤

1、导入依赖

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

我安装的是2.6.3的版本,该版本下默认的使用lettuce,而不是jedis,若想使用jedis,需要自己额外进行引用
image.png

2、配置文件

spring:
  redis:
    host: 127.0.0.1 # ip
    port: 6379 # redis端口
    password: # redis密码

3、测试

package com.walker.utils;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.*;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

@SpringBootTest
public class RedisUtilsTest {

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    /**
     * 测试String
     */
    @Test
    public void testString(){

        ValueOperations<String, String> stringOps = redisTemplate.opsForValue();
        //普通get,set
        stringOps.set("name","hello");
        System.out.println(stringOps.get("name"));
        //设置过期时间,
        stringOps.set("string:time","1",10, TimeUnit.SECONDS);
        System.out.println("获取过期时间:"+redisTemplate.getExpire("string:time",TimeUnit.SECONDS));

        //在key的value进行拼接
        stringOps.append("name","11111111111111");
        stringOps.set("num","10");
        //decrement:-1
        stringOps.decrement("num");
        System.out.println(stringOps.get("num"));
        //increment:+1
        stringOps.increment("num");
        System.out.println(stringOps.get("num"));

        stringOps.set("getAndDelete","11");
        /**
         * getAndDelete 无法使用
         * 报错:ERR unknown command `GETDEL`
         */

        System.out.println("获取过期时间:"+redisTemplate.getExpire("string:time",TimeUnit.SECONDS));

        /**
         * getAndPersist 无法使用
         * 报错: ERR unknown command `GETEX`, with args beginning with: `name`, `PERSIST`,
         */

        System.out.println("获取过期时间:"+redisTemplate.getExpire("string:time",TimeUnit.SECONDS));

        System.out.println("该key的长度为:"+stringOps.size("name"));

    }


    /**
     * 测试hash
     */
    @Test
    void testHash(){
        HashOperations<String, Object, Object> hashOps = redisTemplate.opsForHash();
        String key1="test:hash";
        hashOps.put(key1,"name","walker");
        hashOps.put(key1,"age","18");
        hashOps.put(key1,"school","广药");
        System.out.println(hashOps.get(key1, "name"));
        System.out.println(hashOps.get(key1, "age"));
        System.out.println(hashOps.get(key1, "school"));

        hashOps.increment(key1,"age",5);
        System.out.println("+5之后的结果"+hashOps.get(key1, "age"));
        hashOps.increment(key1,"age",-10);
        System.out.println("-10之后的结果:"+hashOps.get(key1, "age"));

        //删除key
        hashOps.delete(key1,"school");
        System.out.println(hashOps.get(key1, "school"));

        //打印实体结果
        Map<Object, Object> entries = hashOps.entries(key1);
        System.out.println(entries);

        System.out.println("是否存在该key:"+hashOps.hasKey(key1, "age"));

        System.out.println("value的长度:"+hashOps.lengthOfValue(key1, "age"));
        Set<Object> keys = hashOps.keys(key1);
        System.out.println("hash中的key集合"+keys);


        //values 是所有值的结果
        List<Object> values = hashOps.values(key1);
        for (Object value : values) {
            System.out.println(value);
        }

        System.out.println("获取长度"+hashOps.size(key1));


    }


    /**
     * 测试set
     */
    @Test
    void testSet(){
        SetOperations<String, String> setOps = redisTemplate.opsForSet();
        String key="hash:set";
        String key2="hash:set2";
        String key3="hash:set3";
        setOps.add(key,"1","2","3","4","5");
        setOps.add(key2,"7","8","9","4","5");
        System.out.println("key的所有成员"+setOps.members(key));
        System.out.println("key2的所有成员"+setOps.members(key2));

        System.out.println("key和key2的差集:"+setOps.difference(key, key2));
        System.out.println("key2和key的差集:"+setOps.difference(key2, key));

        setOps.differenceAndStore(key,key2,key3);
        System.out.println("key3的所有成员"+setOps.members(key3));

        System.out.println("随机打印成员"+setOps.distinctRandomMembers(key, 1));

        System.out.println("key和key2的交集"+setOps.intersect(key, key2));

        System.out.println("2是否是KEY集合的结果:"+setOps.isMember(key, "2"));

        setOps.move(key,"5",key3);
        System.out.println("key的所有成员"+setOps.members(key));
        System.out.println("key3的所有成员"+setOps.members(key3));

        System.out.println("key和key2的并集"+setOps.union(key, key2));
        System.out.println("长度:"+setOps.size(key));
        System.out.println("弹出key2的值:"+setOps.pop(key2));
        System.out.println("移除key2中的8,结果为:"+setOps.remove(key2,"8"));

    }



    /**
     * 测试list
     */
    @Test
    void testList(){
        ListOperations<String, String> listOps = redisTemplate.opsForList();
        String key="list";
        String key2="list2";
        listOps.leftPush(key,"0");
        listOps.leftPush(key,"1");
        listOps.leftPush(key,"2");
        listOps.leftPush(key,"3");
        listOps.leftPush(key,"2");
        System.out.println(listOps.range(key, 0, 10));

        /**
         * 尽量使用push作为数据插入的方式
         * 而不使用set,因为使用的话如果key不存在,会报错误:ERR no such key
         * 如果索引超出了现有的索引,会报:ERR index out of range
         *         listOps.set(key,1,"1");
         *         listOps.set(key,2,"2");
         *         listOps.set(key,3,"3");
         *         listOps.set(key,4,"2");
         */


        System.out.println("长度"+listOps.size(key));

        /**
         * System.out.println("第一个数据2存在key中的索引"+listOps.indexOf(key, "2"));
         *  ERR unknown command `LPOS`, with args beginning with: `test:list`, `2`,
         *
         */

        listOps.leftPush(key,"10");//从左边加入
        listOps.rightPush(key,"111");//右边加入
        System.out.println(listOps.range(key, 0, 10));


        listOps.leftPop(key); //左边移除第一个
        listOps.rightPop(key); //右边移除第一个
        System.out.println(listOps.range(key, 0, 10));

        listOps.remove(key,1,"3"); //移除1个3
        System.out.println(listOps.range(key, 0, 10));

        listOps.trim(key,2,4); //裁剪
        System.out.println(listOps.range(key, 0, 10));

        /**
         * 移动:
         *  listOps.move(key, RedisListCommands.Direction.LEFT,key2, RedisListCommands.Direction.LEFT);
         * ERR unknown command `LMOVE`, with args beginning with: `list`, `list2`, `LEFT`, `LEFT`,
         */

    }


    /**
     * 测试zset
     */
    @Test
    public void testZset(){
        ZSetOperations<String, String> zsetOps = redisTemplate.opsForZSet();
        String key="test:zset";
        String key2="test:zset2";
        zsetOps.add(key,"小明",5);
        zsetOps.add(key,"李四",10);
        zsetOps.add(key,"老王",4);

        zsetOps.add(key2,"老王",10);
        zsetOps.add(key2,"钟老三",77);

        System.out.println(zsetOps.range(key, 0, 10));
        System.out.println(zsetOps.reverseRange(key, 0, 10));
        System.out.println("按照分数排序[从小到大]"+zsetOps.rangeByScore(key, 0, 10));
        System.out.println("按照分数排序[从大到小]"+zsetOps.reverseRangeByScore(key, 0, 10));

        System.out.println("统计分数范围内的数目:"+zsetOps.count(key, 0, 10));

        System.out.println(zsetOps.zCard(key));

        //差集
        System.out.println("key和key2的差集"+zsetOps.difference(key, key2));
        System.out.println("分数差集"+zsetOps.differenceWithScores(key, key2));

        //并集
        System.out.println(zsetOps.union(key, key2));
        System.out.println(zsetOps.unionWithScores(key, key2));

        //交集
        System.out.println(zsetOps.intersect(key, key2));
        System.out.println(zsetOps.intersectWithScores(key, key2));

        //随机数
        System.out.println(zsetOps.randomMember(key));
        System.out.println(zsetOps.randomMembers(key, 2));
        System.out.println(zsetOps.randomMemberWithScore(key));
        System.out.println(zsetOps.randomMembersWithScore(key, 2));

        //长度
        System.out.println(zsetOps.size(key));

        //增加分数
        zsetOps.incrementScore(key,"老王",11);
        System.out.println("老王分数:"+zsetOps.score(key, "老王"));

        //t
        System.out.println(zsetOps.popMax(key));
        System.out.println(zsetOps.popMin(key));


    }





}

问题

?

1、nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘org.springframework.data.redis.core.RedisTemplate<java.lang.String, java.lang.Object>’ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
image.png
改成这个就可以使用了
image.png

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:14:49  更:2022-02-28 15:16:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:41:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码