我的编程空间,编程开发者的网络收藏夹
学习永远不晚

一文带你了解如何在Java中操作Redis

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

一文带你了解如何在Java中操作Redis


前言

为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

一、 Redis客户端简介

1. Redis客户端分类

Redis的Java 客户端很多,官方推荐的有三种

  1. Jedis
  2. Lettuce
  3. Redisson

2. Spring 整合 Redis 的两种方式

Spring 对 Redis 客户端进行了整合,提供了 Spring Data Redis,在spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis

二、 使用 Jedis 操作 Redis

1. Jedis的maven坐标

redis.clientsjedis2.8.0

2. 使用Jedis操作Redis的步骤

  1. 获取连接
  2. 执行操作
  3. 关闭连接

3. Jedis 操作 Redis 示例

1. 新建maven工程,导入相关坐标

                        junit            junit            4.12                            redis.clients            jedis            2.8.0        

2. 编写测试方法

public class JedisTest {    @Test    public void testRedis(){        //1 获取连接        Jedis jedis = new Jedis("localhost",6379);                //2 执行具体的操作        jedis.set("username","xiaoming");                //输出打印        String value = jedis.get("username");        System.out.println(value);                //删除操作        //jedis.del("username");        //哈希存储        jedis.hset("myhash","addr","bj");        //输出打印        String hValue = jedis.hget("myhash", "addr");        System.out.println(hValue);        //keys * 输出打印        Set keys = jedis.keys("*");        for (String key : keys) {            System.out.println(key);        }        //3 关闭连接        jedis.close();    }}

3. 启动redis服务(windows),连接客户端,测试获取 key username

在这里插入图片描述

4. 启动测试类,通过后再次获取key username

在这里插入图片描述

三、 使用 Spring Data Redis 操作 Redis

1. Spring Data Redis 的 maven 坐标

org.springframework.bootspring-boot-starter-data-redis

2. spring Data Redis 中 operation 接口的分类

spring Data Redis中提供了一个高度封装的类RedisTemplate,针对iedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下

  1. ValueOperations ---- 简单K-V操作
  2. SetOperations ---- set类型数据操作
  3. ZSetOperations ---- zset类型数据操作
  4. HashOperations ---- 针对map类型的数据操作
  5. ListOperations ---- 针对list类型的数据操作

3. Spring Data Redis 操作 Redis String 类型示例(ValueOperations ---- 简单K-V操作)

1. 新建 SpringBoot 工程,导入相关坐标

                    org.springframework.boot            spring-boot-starter-test            test                            junit            junit                            org.springframework.boot            spring-boot-starter-data-redis        

2. yml 配置文件

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 #连接池中的最小空闲连接

3. 了解如何修改默认数据库数量(16)配置

在这里插入图片描述

4. 编写测试方法

@SpringBootTest@RunWith(SpringRunner.class)public class SpringDataRedisTest {    //yml中配置支持RedisTemplate对象自动装配    @Autowired    private RedisTemplate redisTemplate;        @Test    public void testString(){        //ValueOperations valueOperations = redisTemplate.opsForValue();        redisTemplate.opsForValue().set("city","beijing");    }}

5. 运行并访问设置的 key 值

在这里插入图片描述

6. 设置配置类配置Redis序列化方式

@Configurationpublic class RedisConfig extends CachingConfigurerSupport {    @Bean    public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {        RedisTemplate redisTemplate = new RedisTemplate<>();        //默认的Key序列化器为:JdkSerializationRedisSerializer        //String类型序列化器        redisTemplate.setKeySerializer(new StringRedisSerializer());        //hash类型序列化器        redisTemplate.setHashKeySerializer(new StringRedisSerializer());        redisTemplate.setConnectionFactory(connectionFactory);        return redisTemplate;    }}

7. 修改添加的 key 为 city123,再次运行测试类并访问新设置的 key

在这里插入图片描述

8. 其他测试

@SpringBootTest@RunWith(SpringRunner.class)public class SpringDataRedisTest {    //yml中配置支持RedisTemplate对象自动装配    @Autowired    private RedisTemplate redisTemplate;        @Test    public void testString(){        //ValueOperations valueOperations = redisTemplate.opsForValue();        redisTemplate.opsForValue().set("city123","beijing");        //打印输出        String value = (String) redisTemplate.opsForValue().get("city123");        System.out.println(value);        //设置超时时间        redisTemplate.opsForValue().set("key1","value1",10l, TimeUnit.SECONDS);        //当key不存在才设置value        Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city1234", "nanjing");        System.out.println(aBoolean);            }}

4. Spring Data Redis 操作 Redis hash 类型示例(HashOperations ---- 针对map类型的数据操作)

1. 编写相关测试方法

@SpringBootTest@RunWith(SpringRunner.class)public class SpringDataRedisTest {    @Autowired    private RedisTemplate redisTemplate;            @Test    public void testHash(){        HashOperations hashOperations = redisTemplate.opsForHash();        //存值        hashOperations.put("002","name","xiaoming");        hashOperations.put("002","age","20");        hashOperations.put("002","address","bj");        //取值        String age = (String) hashOperations.get("002", "age");        System.out.println(age);        //获得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);        }    }}

2. 运行测试类,观察结果

在这里插入图片描述

5. Spring Data Redis 操作 Redis list 类型示例(ListOperations ---- 针对list类型的数据操作)

1. 编写测试相关测试方法

@SpringBootTest@RunWith(SpringRunner.class)public class SpringDataRedisTest {    @Autowired    private RedisTemplate redisTemplate;           @Test    public void testList(){        ListOperations listOperations = redisTemplate.opsForList();        //存1个值        listOperations.leftPush("mylist","a");        //存多个值        listOperations.leftPushAll("mylist","b","c","d");        //取值        List mylist = listOperations.range("mylist", 0, -1);        for (String value : mylist) {            System.out.println(value);        }        //获得列表长度 llen        Long size = listOperations.size("mylist");        int lSize = size.intValue();        for (int i = 0; i < lSize; i++) {            //出队列            String element = (String) listOperations.rightPop("mylist");            System.out.println(element);        }    }}

2. 运行测试方法,观察结果

在这里插入图片描述

6. Spring Data Redis 操作 Redis set 类型示例( SetOperations ---- set类型数据操作)

1. 编写相关测试方法

@SpringBootTest@RunWith(SpringRunner.class)public class SpringDataRedisTest {    @Autowired    private RedisTemplate redisTemplate;        @Test    public void testSet(){        SetOperations setOperations = redisTemplate.opsForSet();        //存值        setOperations.add("myset","a","b","c","a");        //取值        Set myset = setOperations.members("myset");        for (String o : myset) {            System.out.println(o);        }        //删除成员        setOperations.remove("myset","a","b");        //取值        myset = setOperations.members("myset");        for (String o : myset) {           ![在这里插入图片描述](https://img-blog.csdnimg.cn/498ec17ed8744d25a0cd5ee96fc20b73.png) System.out.println(o);        }    }}

2. 运行测试方法,观察结果

在这里插入图片描述

7. Spring Data Redis 操作 Redis Zset 类型示例(ZSetOperations ---- zset类型数据操作)

1. 编写相关测试方法

@SpringBootTest@RunWith(SpringRunner.class)public class SpringDataRedisTest {    @Autowired    private RedisTemplate redisTemplate;         @Test    public void testZset(){        ZSetOperations zSetOperations = redisTemplate.opsForZSet();        //存值        zSetOperations.add("myZset","a",10.0);        zSetOperations.add("myZset","b",11.0);        zSetOperations.add("myZset","c",12.0);        zSetOperations.add("myZset","a",13.0);        //取值        Set myZset = zSetOperations.range("myZset", 0, -1);        for (String s : myZset) {            System.out.println(s);        }        //修改分数        zSetOperations.incrementScore("myZset","b",20.0);        //取值        myZset = zSetOperations.range("myZset", 0, -1);        for (String s : myZset) {            System.out.println(s);        }        //删除成员        zSetOperations.remove("myZset","a","b");        //取值        myZset = zSetOperations.range("myZset", 0, -1);        for (String s : myZset) {            System.out.println(s);        }    }}

2. 运行测试方法,观察结果

在这里插入图片描述

8. Spring Data Redis 操作 Redis 通用操作

1. 编写相关测试方法

@SpringBootTest@RunWith(SpringRunner.class)public class SpringDataRedisTest {    @Autowired    private RedisTemplate redisTemplate;        @Test    public void testCommon(){        //获取Redis中所有的key        Set keys = redisTemplate.keys("*");        for (String key : keys) {            System.out.println(key);        }        //判断某个key是否存在        Boolean itcast = redisTemplate.hasKey("dongli");        System.out.println(itcast);        //删除指定key        redisTemplate.delete("myZset");        //获取指定key对应的value的数据类型        DataType dataType = redisTemplate.type("myset");        System.out.println(dataType.name());    }}

2. 运行测试方法,观察结果

在这里插入图片描述

总结

欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

来源地址:https://blog.csdn.net/HHX_01/article/details/131748045

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

一文带你了解如何在Java中操作Redis

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

一文带你了解如何在Java中操作Redis

文章目录 前言一、 Redis客户端简介1. Redis客户端分类2. Spring 整合 Redis 的两种方式 二、 使用 Jedis 操作 Redis1. Jedis的maven坐标2. 使用Jedis操作Redis的步骤
2023-08-16

一文带你了解MySQL中触发器的操作

目录概述介绍触发器的特性操作—创建触发器操作—new和old操作—查看触发器操作—删除触发器注意事项概述介绍触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储
2023-02-17

一文带你了解C#操作MySql的方法

工作中大多数情况下用的都是MySql但一直没有记录,相关操作。这篇文章以便MySql.Data库进行MySql操作,使用C#执行SQL语句,造个轮子
2023-03-20

一文带你了解Java中的SPI机制

SPI全称是ServiceProviderInterface,是一种JDK内置的动态加载实现扩展点的机制,本文主要为大家介绍了SPI机制的原理与使用,需要的可以参考一下
2023-05-15

一文带你了解Redis中RDB与AOF的区别

目录Redis 中的 RDB 与 AOFRDBAOF小结Redis 中的 RDB 与 AOF我们都知道,Redis 运行时是将数据保存在内存中的,如果服务器宕机或者重启,那么内存中的数据必然会丢失,从而影响正常的业务运行。所以,我们就必须
2023-06-10

一文带你了解Go语言中time包的时间常用操作

在日常开发中,我们避免不了时间的使用,我们可能需要获取当前时间,然后格式化保存,也可能需要在时间类型与字符串类型之间相互转换等。本文将会对 Go time 包里面的常用函数和方法进行介绍,需要的可以参考一下
2022-12-08

一文带你了解Java中的函数式编程

函数式编程的理论基础是阿隆佐·丘奇(AlonzoChurch)于1930年代提出的λ演算(LambdaCalculus)。这篇文章主要为大家介绍了函数式编程的相关知识,希望对大家有所帮助
2023-05-14

一文带你了解Go语言如何解析JSON

本文将说明如何利用 Go 语言将 JSON 解析为结构体和数组,如果解析 JSON 的嵌入对象,如何将 JSON 的自定义属性名称映射到结构体,如何解析非结构化的 JSON 字符串
2023-01-12

一文带你了解如何正确使用MyBatisPlus

在本篇文章中,我们奖通过 MyBatis Plus 来对一张表进行 CRUD 操作,来看看是如何简化我们开发的。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
2022-12-08

一文带你了解java中的泛型、反射与注解

一文带你了解java中的泛型、反射与注解?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。泛型擦除泛型擦除: 泛型只在编译时期有效,编译后的字节码文件中不存在泛型信息。声明泛型
2023-05-31

一文带你了解Java中数值与集合的区别

一文带你了解Java中数值与集合的区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。数组array和集合的区别:(1) 数值是大小固定的,同一数组只能存放一样的数据。(2) j
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录