1.介绍

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

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

2.Jedis

Jedis的maven坐标:

<dependency><groupld>redis.clients</groupld><artifactld>jedis</artifactld><version>2.8.0</version>
</dependency>

使用Jedis操作Redis的步骤:
① 获取连接
② 执行操作
③ 关闭连接

 //使用Jedis操作Redis
public class JedisTest {@Testpublic 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);Set<String> keys = jedis.keys("*");for (String key : keys) {System.out.println(key);}//3 关闭连接jedis.close();}}

输入结果如下图

3.Spring Data Redis

在Spring Boot项目中,可以使用Spring Data Redis来简化Redis操作,maven坐标:

<dependency><groupld>org.springframework.boot</groupld><artifactld>spring-boot-starter-data-redis</artifactld>
</ dependency>

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

  • ValueOperations:简单K-V操作
  • SetOperations: set类型数据操作
  • ZSetOperations: zset类型数据操作
  • HashOperations:针对map类型的数据操作
  • ListOperations:针对list类型的数据操作

application.yml

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

tips:切换数据库使用 select,比如切换到1号数据库就是select 1

测试类

package com.itheima.test;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.core.*;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest {@Autowiredprivate RedisTemplate redisTemplate;/*** 操作String类型数据*/@Testpublic void testString(){redisTemplate.opsForValue().set("city123","beijing");String value = (String) redisTemplate.opsForValue().get("city123");System.out.println(value);redisTemplate.opsForValue().set("key1","value1",10l, TimeUnit.SECONDS);Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city1234", "nanjing");System.out.println(aBoolean);}/*** 操作Hash类型数据*/@Testpublic 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);}}/*** 操作List类型的数据*/@Testpublic void testList(){ListOperations listOperations = redisTemplate.opsForList();//存值listOperations.leftPush("mylist","a");listOperations.leftPushAll("mylist","b","c","d");//取值List<String> mylist = listOperations.range("mylist", 0, -1);for (String value : mylist) {System.out.println(value);}//获得列表长度 llenLong 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);}}/*** 操作Set类型的数据*/@Testpublic void testSet(){SetOperations setOperations = redisTemplate.opsForSet();//存值setOperations.add("myset","a","b","c","a");//取值Set<String> 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) {System.out.println(o);}}/*** 操作ZSet类型的数据*/@Testpublic 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<String> 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);}}/*** 通用操作,针对不同的数据类型都可以操作*/@Testpublic void testCommon(){//获取Redis中所有的keySet<String> keys = redisTemplate.keys("*");for (String key : keys) {System.out.println(key);}//判断某个key是否存在Boolean itcast = redisTemplate.hasKey("itcast");System.out.println(itcast);//删除指定keyredisTemplate.delete("myZset");//获取指定key对应的value的数据类型DataType dataType = redisTemplate.type("myset");System.out.println(dataType.name());}
}

输出结果


配置类

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 {@Beanpublic RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();//默认的Key序列化器为:JdkSerializationRedisSerializerredisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setConnectionFactory(connectionFactory);return redisTemplate;}}

在Java中操作Redis(详细完整版)相关推荐

  1. Java中的IO整理完整版

    本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面.照旧,文章依旧以例子为主,因为讲解内容的 ...

  2. 初学者参考C#中操作XML修改完整版

    本人也是初学XML网上找个基本例子, 但是运行有写错误,现自己修改后把代码贴上来,让同是初学者参考 1.新建一个XML文件(bookstore.xml)如下: <?xml version=&qu ...

  3. 2018大数据培训学习路线图(详细完整版)

    2018大数据培训学习路线全课程目录+学习线路详解(详细完整版) 第一阶段:大数据基础Java语言基础阶段 1.1:Java开发介绍 1.1.1 Java的发展历史 1.1.2 Java的应用领域 1 ...

  4. c#获取对象的唯一标识_在 Java 中利用 redis 实现分布式全局唯一标识服务

    作者: 杨高超 juejin.im/post/5a4984265188252b145b643e 获取全局唯一标识的方法介绍 在一个IT系统中,获取一个对象的唯一标识符是一个普遍的需求.在以前的单体应用 ...

  5. Redis介绍 Java客户端操作Redis

    Redis介绍 && Java客户端操作Redis 本文内容 redis介绍 redis的 shell 客户端简介 redis的 java 客户端简介 环境配置 redis 2.8.1 ...

  6. Redis介绍 Java客户端操作Redis

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow Redis介绍 & ...

  7. JavaScript + Audio API自制简易音乐播放器(详细完整版、小白都能看懂)

    JavaScript + Audio API自制简易音乐播放器(详细完整版) ** 音乐播放器的功能清单如下: ** 1.点击暂停按钮,歌曲暂停 2.点击播放按钮,歌曲播放 3.单曲循环与取消单曲循环 ...

  8. 在java中使用redis

    在java中使用redis很简单,只需要添加jedist.jar,通过它的api就可以了.而且,api和redis的语法几乎完全相同.以下简单的测试: 参考:http://www.runoob.com ...

  9. PHP 操作redis 详细讲解

    2019独角兽企业重金招聘Python工程师标准>>> Redis 菜鸟教程学习网址 http://www.runoob.com/redis/redis-install.html 挺 ...

最新文章

  1. C# 2进制、8进制、10进制、16进制...各种进制间的轻松转换
  2. TensorRT学习笔记3 - 运行sampleMNIST
  3. java 镶嵌创建线程_Java多线程——之一创建线程的四种方法
  4. windows查找端口占用并杀死端口进程
  5. web前后台数据交互的四种方式
  6. 四元数运动学笔记(1)旋转的表示
  7. Windows与Linux下查看占用端口的进程
  8. knex 单表查询_sql 单表查询练习
  9. 列出本机JCE支持的Provider、消息摘要算法、公钥私钥算法
  10. MTK 一个分支兼容多客户开机Logo方案
  11. android同花顺布局,同花顺首发 Android平板电脑炒股高清版
  12. 物联网终端有哪些应用
  13. 严格约束选股条件 能否找到跑赢市场的好公司?
  14. ntfs linux,NTFS-3G (简体中文)
  15. 服务端通过AWS SNS创建消息推送记录
  16. ubuntu 16.04 单用户____修改忘记密码
  17. navicat转换word表格
  18. 三周Java学习总结
  19. ML之VC维:VC维(Vapnik-Chervonenkis Dimension)理论的概述(衡量模型复杂度和预测能力的指标)的简介、案例理解之详细攻略
  20. 学C语言,C++是自学好还是去培训机构?

热门文章

  1. Office 365系列之二:注册全球版微软Office 365
  2. 《我编程,我快乐》摘抄和感想
  3. Item 38. 异常安全之公理(Exception Safety Axioms)
  4. java rfc3986_tomcat对URL合法字符的判断(RFC 7230 and RFC 3986 异常排查)
  5. 特殊符号用英语怎么说
  6. python:生成器:斐波那契数列
  7. 常见的DOM操作方式有哪些
  8. 运动品牌推荐:双十一最值得买的运动用品推荐
  9. PYTHON健康评分
  10. 计算机仿真专业大学,虚拟现实应用技术专业大学排名 全国排行榜