当前位置: 首页 > wzjs >正文

邵阳企业网站建设宜城网站定制

邵阳企业网站建设,宜城网站定制,网站qq临时会话,广东建设网站在Java中操作Redis Redis的Java客户端 前面我们讲解了Redis的常用命令,这些命令是我们操作Redis的基础,那么我们在java程序中应该如何操作Redis呢?这就需要使用Redis的Java客户端,就如同我们使用JDBC操作MySQL数据库一样。 Red…

在Java中操作Redis

Redis的Java客户端

前面我们讲解了Redis的常用命令,这些命令是我们操作Redis的基础,那么我们在java程序中应该如何操作Redis呢?这就需要使用Redis的Java客户端,就如同我们使用JDBC操作MySQL数据库一样。

Redis 的 Java 客户端很多,常用的几种:

  • Jedis
  • Lettuce
  • Spring Data Redis

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

我们重点学习Spring Data Redis

Spring Data Redis使用方式

介绍

Spring Data Redis 是 Spring 的一部分,提供了在 Spring 应用中通过简单的配置就可以访问 Redis 服务,对 Redis 底层开发包进行了高度封装。在 Spring 项目中,可以使用Spring Data Redis来简化 Redis 操作。

网址:https://spring.io/projects/spring-data-redis

在这里插入图片描述

Spring Boot提供了对应的Starter,maven坐标:

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

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

  • ValueOperations:string数据操作
  • SetOperations:set类型数据操作
  • ZSetOperations:zset类型数据操作
  • HashOperations:hash类型的数据操作
  • ListOperations:list类型的数据操作
环境搭建

进入到sky-server模块

1). 导入Spring Data Redis的maven坐标(已完成)

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

2). 配置Redis数据源

在application-dev.yml中添加

sky:redis:host: localhostport: 6379password: 123456database: 10

解释说明:

database:指定使用Redis的哪个数据库,Redis服务启动后默认有16个数据库,编号分别是从0到15。

可以通过修改Redis配置文件来指定数据库的数量。

在application.yml中添加读取application-dev.yml中的相关Redis配置

spring:profiles:active: devredis:host: ${sky.redis.host}port: ${sky.redis.port}password: ${sky.redis.password}database: ${sky.redis.database}

3). 编写配置类,创建RedisTemplate对象

package com.sky.config;import lombok.extern.slf4j.Slf4j;
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;@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("开始创建redis模板对象...");RedisTemplate redisTemplate = new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置redis key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}

解释说明:

当前配置类不是必须的,因为 Spring Boot 框架会自动装配 RedisTemplate 对象,但是默认的key序列化器为

JdkSerializationRedisSerializer,导致我们存到Redis中后的数据和原始数据有差别,故设置为

StringRedisSerializer序列化器。

4). 通过RedisTemplate对象操作Redis

在test下新建测试类

package com.sky.test;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.*;@SpringBootTest
public class SpringDataRedisTest {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testRedisTemplate(){System.out.println(redisTemplate);//string数据操作ValueOperations valueOperations = redisTemplate.opsForValue();//hash类型的数据操作HashOperations hashOperations = redisTemplate.opsForHash();//list类型的数据操作ListOperations listOperations = redisTemplate.opsForList();//set类型数据操作SetOperations setOperations = redisTemplate.opsForSet();//zset类型数据操作ZSetOperations zSetOperations = redisTemplate.opsForZSet();}
}

测试:
在这里插入图片描述

说明RedisTemplate对象注入成功,并且通过该RedisTemplate对象获取操作5种数据类型相关对象。

上述环境搭建完毕后,接下来,我们就来具体对常见5种数据类型进行操作。

操作常见类型数据

1). 操作字符串类型数据

	/*** 操作字符串类型的数据*/@Testpublic void testString(){// set get setex setnxredisTemplate.opsForValue().set("name","小明");String city = (String) redisTemplate.opsForValue().get("name");System.out.println(city);redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);redisTemplate.opsForValue().setIfAbsent("lock","1");redisTemplate.opsForValue().setIfAbsent("lock","2");}

2). 操作哈希类型数据

	/*** 操作哈希类型的数据*/@Testpublic void testHash(){//hset hget hdel hkeys hvalsHashOperations hashOperations = redisTemplate.opsForHash();hashOperations.put("100","name","tom");hashOperations.put("100","age","20");String name = (String) hashOperations.get("100", "name");System.out.println(name);Set keys = hashOperations.keys("100");System.out.println(keys);List values = hashOperations.values("100");System.out.println(values);hashOperations.delete("100","age");}

3). 操作列表类型数据

	/*** 操作列表类型的数据*/@Testpublic void testList(){//lpush lrange rpop llenListOperations listOperations = redisTemplate.opsForList();listOperations.leftPushAll("mylist","a","b","c");listOperations.leftPush("mylist","d");List mylist = listOperations.range("mylist", 0, -1);System.out.println(mylist);listOperations.rightPop("mylist");Long size = listOperations.size("mylist");System.out.println(size);}

4). 操作集合类型数据

	/*** 操作集合类型的数据*/@Testpublic void testSet(){//sadd smembers scard sinter sunion sremSetOperations setOperations = redisTemplate.opsForSet();setOperations.add("set1","a","b","c","d");setOperations.add("set2","a","b","x","y");Set members = setOperations.members("set1");System.out.println(members);Long size = setOperations.size("set1");System.out.println(size);Set intersect = setOperations.intersect("set1", "set2");System.out.println(intersect);Set union = setOperations.union("set1", "set2");System.out.println(union);setOperations.remove("set1","a","b");}

5). 操作有序集合类型数据

	/*** 操作有序集合类型的数据*/@Testpublic void testZset(){//zadd zrange zincrby zremZSetOperations zSetOperations = redisTemplate.opsForZSet();zSetOperations.add("zset1","a",10);zSetOperations.add("zset1","b",12);zSetOperations.add("zset1","c",9);Set zset1 = zSetOperations.range("zset1", 0, -1);System.out.println(zset1);zSetOperations.incrementScore("zset1","c",10);zSetOperations.remove("zset1","a","b");}

6). 通用命令操作

	/*** 通用命令操作*/@Testpublic void testCommon(){//keys exists type delSet keys = redisTemplate.keys("*");System.out.println(keys);Boolean name = redisTemplate.hasKey("name");Boolean set1 = redisTemplate.hasKey("set1");for (Object key : keys) {DataType type = redisTemplate.type(key);System.out.println(type.name());}redisTemplate.delete("mylist");}

文章转载自:

http://k1HnWHZC.nhdkk.cn
http://HXnZkW0d.nhdkk.cn
http://PT0PgV0h.nhdkk.cn
http://9lNMNBAO.nhdkk.cn
http://Jcgfvyxv.nhdkk.cn
http://Fjq4ywPN.nhdkk.cn
http://BEcyaXeL.nhdkk.cn
http://afRrDl3W.nhdkk.cn
http://zKBewYKs.nhdkk.cn
http://6bcuKjMZ.nhdkk.cn
http://4kRb6KAC.nhdkk.cn
http://q0NIaw4Q.nhdkk.cn
http://3Lch0KZv.nhdkk.cn
http://0gbUGcdH.nhdkk.cn
http://B1oTDrOg.nhdkk.cn
http://sozQlNob.nhdkk.cn
http://KHjF9klJ.nhdkk.cn
http://qHlNe9px.nhdkk.cn
http://hlzPtOVI.nhdkk.cn
http://kfKjdqlL.nhdkk.cn
http://GhIInfmb.nhdkk.cn
http://gWITMO10.nhdkk.cn
http://WCkxzhlE.nhdkk.cn
http://SoPmv9s1.nhdkk.cn
http://UCb9XpY8.nhdkk.cn
http://fUprUhXW.nhdkk.cn
http://mlqcUKFm.nhdkk.cn
http://64dY7Z1w.nhdkk.cn
http://rK1zK32V.nhdkk.cn
http://TSlfJ7RM.nhdkk.cn
http://www.dtcms.com/wzjs/678020.html

相关文章:

  • 九度互联网站制作效果京津冀协同发展调研报告
  • 河南住房与城乡建设厅网站苏州关键词优化怎样
  • 怎么自学电商运营新手做seo怎么做
  • 镇江网站定制九江市住房和城乡建设局官方网站
  • 沈阳建站模板展示微商怎么做 和淘宝网站一样吗
  • 做电商卖玉器的网站网站设计的要求
  • 做网站帮外国人淘宝东营网站的优化
  • 网站上面的头像怎么做的泰安网站建设泽讯
  • 使用vue路由做网站关于做网站电话销售
  • 网站年报公示怎么做中核二二公司是国企还是央企
  • 上海专业网站建站品上海市网站seo公司
  • 集团网站品牌建设特点深圳专业建站公司有哪些
  • 网站建设的需求方案怎么写沈阳网站建设的公司
  • 个人简介网站源码做商城网站带宽
  • 成全视频免费观看百度搜索优化建议
  • 网站百度文库2021近期时事新闻热点事件简短
  • 义马网站建设电话厦门企业网站建设专家
  • 摄影网站制作设计徐州泉山建设局网站
  • 网站制作步骤企业建立一个网站如何租用域名
  • ip下的网站吗网站做不做301
  • 海口制作网站公司网络服务费分录
  • 广州企业网站建设推荐网站网络资源建立
  • 做素材网站服务器检察机关门户网站建设工作自查报告
  • 产业协会建设网站方案怎么样给公司做网站
  • 建设银行网站登录没反应广州市有几个区
  • 网站制作能赚多少钱如何做一网站首页
  • 网站建设样板开发一款手机app软件需要多少钱
  • 阿里云 个人网站自建网站投放广告
  • 怎么让人搜索到自己做的网站php高级网站开发
  • 手机网站做桌面快捷方式凯里网络推广