文章目录

前言发现宝藏一、 Redis客户端简介1. Redis客户端分类2. Spring 整合 Redis 的两种方式

二、 使用 Jedis 操作 Redis1. Jedis的maven坐标2. 使用Jedis操作Redis的步骤3. Jedis 操作 Redis 示例

三、 使用 Spring Data Redis 操作 Redis1. Spring Data Redis 的 maven 坐标2. spring Data Redis 中 operation 接口的分类3. Spring Data Redis 操作 Redis String 类型示例(ValueOperations ---- 简单K-V操作)4. Spring Data Redis 操作 Redis hash 类型示例(HashOperations ---- 针对map类型的数据操作)5. Spring Data Redis 操作 Redis list 类型示例(ListOperations ---- 针对list类型的数据操作)6. Spring Data Redis 操作 Redis set 类型示例( SetOperations ---- set类型数据操作)7. Spring Data Redis 操作 Redis Zset 类型示例(ZSetOperations ---- zset类型数据操作)8. Spring Data Redis 操作 Redis 通用操作

总结

前言

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

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

一、 Redis客户端简介

1. Redis客户端分类

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

JedisLettuceRedisson

2. Spring 整合 Redis 的两种方式

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

二、 使用 Jedis 操作 Redis

1. Jedis的maven坐标

redis.clients

jedis

2.8.0

2. 使用Jedis操作Redis的步骤

获取连接执行操作关闭连接

3. Jedis 操作 Redis 示例

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

junit

junit

4.12

redis.clients

jedis

2.8.0

2. 编写测试方法

/**

* 使用Jedis操作Redis

*/

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.boot

spring-boot-starter-data-redis

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

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

ValueOperations ---- 简单K-V操作SetOperations ---- set类型数据操作ZSetOperations ---- zset类型数据操作HashOperations ---- 针对map类型的数据操作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;

/**

* 操作String类型数据

*/

@Test

public void testString(){

//ValueOperations valueOperations = redisTemplate.opsForValue();

redisTemplate.opsForValue().set("city","beijing");

}

}

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

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

/**

* Redis配置类

*/

@Configuration

public 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;

/**

* 操作String类型数据

*/

@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;

/**

* 操作Hash类型数据

*/

@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;

/**

* 操作List类型的数据

*/

@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;

/**

* 操作Set类型的数据

*/

@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;

/**

* 操作ZSet类型的数据

*/

@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. 运行测试方法,观察结果

总结

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

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: