赞
踩
为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。
Redis的Java 客户端很多,官方推荐的有三种
- Jedis
- Lettuce
- Redisson
Spring 对 Redis 客户端进行了整合,提供了 Spring Data Redis,在spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis
<dependency>
<groupld>redis.clients</groupld>
<artifactld>jedis</artifactld>
<version>2.8.0</version>
</dependency>
- 获取连接
- 执行操作
- 关闭连接
1. 新建maven工程,导入相关坐标
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
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<String> keys = jedis.keys("*"); for (String key : keys) { System.out.println(key); } //3 关闭连接 jedis.close(); } }
3. 启动redis服务(windows),连接客户端,测试获取 key username
4. 启动测试类,通过后再次获取key username
<dependency>
<groupld>org.springframework.boot</groupld>
<artifactld>spring-boot-starter-data-redis</artifactld>
</dependency>
spring Data Redis中提供了一个高度封装的类RedisTemplate,针对iedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下
- ValueOperations ---- 简单K-V操作
- SetOperations ---- set类型数据操作
- ZSetOperations ---- zset类型数据操作
- HashOperations ---- 针对map类型的数据操作
- ListOperations ---- 针对list类型的数据操作
1. 新建 SpringBoot 工程,导入相关坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
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<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<Object, Object> 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); } }
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. 运行测试类,观察结果
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<String> 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. 运行测试方法,观察结果
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<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) { ![在这里插入图片描述](https://img-blog.csdnimg.cn/498ec17ed8744d25a0cd5ee96fc20b73.png) System.out.println(o); } } }
2. 运行测试方法,观察结果
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<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); } } }
2. 运行测试方法,观察结果
1. 编写相关测试方法
@SpringBootTest @RunWith(SpringRunner.class) public class SpringDataRedisTest { @Autowired private RedisTemplate redisTemplate; /** * 通用操作,针对不同的数据类型都可以操作 */ @Test public void testCommon(){ //获取Redis中所有的key Set<String> 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. 运行测试方法,观察结果
欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。