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

Redis:java和SpringBoot中使用Redis

目录

  • Jedis操作Redis6
  • SpringBoot整合Redis

Jedis操作Redis6

Jedis是java开发的操作redis的工具包。

引入maven依赖:

<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.1</version> 
</dependency>

使用redis的api操作redis:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;public class JedisTest {Jedis jedis;@Beforepublic void before() {this.jedis = new Jedis("192.168.200.129", 6379);}@Afterpublic void after() {//关闭jedisthis.jedis.close();}/*** 测试redis是否连通*/@Testpublic void test1() {String ping = jedis.ping();System.out.println(ping);}/*** string类型测试*/@Testpublic void stringTest() {jedis.set("site", "http://www.itsoku.com");System.out.println(jedis.get("site"));System.out.println(jedis.ttl("site"));}/*** list类型测试*/@Testpublic void listTest() {jedis.rpush("courses", "java", "spring", "springmvc", "springboot");List<String> courses = jedis.lrange("courses", 0, -1);for (String course : courses) {System.out.println(course);}}/***  zset类型测试*/@Testpublic void setTest() {jedis.sadd("users", "tom", "jack", "ready");Set<String> users = jedis.smembers("users");for (String user : users) {System.out.println(user);}}/***  订阅消息** @throws InterruptedException*/@Testpublic void subscribeTest() throws InterruptedException {//subscribe(消息监听器,频道列表)jedis.subscribe(new JedisPubSub() {@Overridepublic void onMessage(String channel, String message) {System.out.println(channel + ":" + message);}}, "sitemsg");TimeUnit.HOURS.sleep(1); }}/*** 发布消息*/@Testpublic void publishTest() {jedis.publish("sitemsg", "hello redis");}}

SpringBoot整合Redis

引入redis的maven配置:

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

application.properties中配置redis信息:

# redis 服务器 ip 
spring.redis.host=192.168.200.129 
# redis 服务器端口 
spring.redis.port=6379 
# redis 密码 
#spring.redis.password=root 
# 连接超时时间(毫秒) 
spring.redis.timeout=60000 
# Redis默认情况下有16个分片,这里配置具体使用的分片,默认是0
spring.redis.database=0

使用RedisTemplate工具类操作redis:

springboot中使用RedisTemplate来操作redis,需要在我们的bean中注入这个对象,代码如下:

@Autowired private RedisTemplate<String, String> redisTemplate; // 用下面5个对象来操作对应的类型 
this.redisTemplate.opsForValue(); //提供了操作string类型的所有方法 
this.redisTemplate.opsForList(); // 提供了操作list类型的所有方法 
this.redisTemplate.opsForSet(); //提供了操作set的所有方法 
this.redisTemplate.opsForHash(); //提供了操作hash表的所有方法 
this.redisTemplate.opsForZSet(); //提供了操作zset的所有方法

RedisTemplate示例代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap; import java.util.List;
import java.util.Map; import java.util.Set;
import java.util.concurrent.TimeUnit;@RestController
@RequestMapping("/redis")
public class RedisController {@Autowiredprivate RedisTemplate<String, String> redisTemplate;@RequestMapping("/stringTest")public String stringTest() {this.redisTemplate.delete("name");this.redisTemplate.opsForValue().set("name", "路人");String name = this.redisTemplate.opsForValue().get("name");return name;}@RequestMapping("/listTest")public List<String> listTest() {this.redisTemplate.delete("names");this.redisTemplate.opsForList().rightPushAll("names", "刘德华", "张学友", "郭富城", "黎明");List<String> courses = this.redisTemplate.opsForList().range("names", 0, -1);return courses;}@RequestMapping("setTest")public Set<String> setTest() {this.redisTemplate.delete("courses");this.redisTemplate.opsForSet().add("courses", "java", "spring", "springboot");Set<String> courses = this.redisTemplate.opsForSet().members("courses");return courses;}@RequestMapping("hashTest")public Map<Object, Object> hashTest() {this.redisTemplate.delete("userMap");Map<String, String> map = new HashMap<>();map.put("name", "路人"); map.put("age", "30");this.redisTemplate.opsForHash().putAll("userMap", map);Map<Object, Object> userMap = this.redisTemplate.opsForHash().entries("userMap");return userMap;}@RequestMapping("zsetTest") public Set<String> zsetTest() { this.redisTemplate.delete("languages"); this.redisTemplate.opsForZSet().add("languages", "java", 100d); this.redisTemplate.opsForZSet().add("languages", "c", 95d); this.redisTemplate.opsForZSet().add("languages", "php", 70); Set<String> languages = this.redisTemplate.opsForZSet().range("languages", 0, -1);return languages; }}
http://www.lryc.cn/news/234239.html

相关文章:

  • Java的XWPFTemplate word生成列表
  • 基于RFID的自动化仓储设备研发项目可行性研究报告
  • ajax异步传值以及后端接收参数的几种方式
  • 千年TGS服务器日志报错如何解决
  • 读取Json BugFix
  • 【Gradle构件工具深度学习】
  • Attention Transformer
  • [最新榜单] 智能手机数据恢复的 10 款最佳应用
  • 修改CentOS默认mail发件名称
  • Lesson 03 C/C++内存管理
  • 【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理(正在更新中......)
  • Docker与Kubernetes结合的难题与技术解决方案
  • CVE-2021-42287CVE-2021-42278 域内提权
  • springcloud整合nacos实现服务注册
  • redis实现布隆过滤器
  • 山西电力市场日前价格预测【2023-11-19】
  • 深眸科技革新升级OCR技术,与AI视觉实现有效融合赋能各行业应用
  • 性能测试知多少---系统架构分析
  • 【观察】华为:数智世界“一触即达”,应对数智化转型“千变万化”
  • 我的 2023 秋招总结,拿到了大厂offer
  • 力扣labuladong——一刷day36
  • 解锁编程潜能:探索亚马逊CodeWhisperer,打造编程世界的声音引导者
  • 01_面向对象高级_static
  • 双写绕过 [极客大挑战 2019]BabySQL 1
  • uni.app 使用 mixins 技术统一注入小程序页面分享到好友,分享朋友圈功能
  • 贝叶斯AB测试
  • 信息检索与数据挖掘 | 【实验】检索评价指标MAP、MRR、NDCG
  • 读书笔记:彼得·德鲁克《认识管理》第24章 管理岗位的设计与内容
  • 某60区块链安全之51%攻击实战学习记录
  • 为什么原生IP可以降低Google play账号关联风险?企业号解决8.3/10.3账号关联问题?