高并发核心技术Redis系列(七)--------Jedis操作Redis

简介: 先读缓存,再读数据库

一、Jedis操作Redis

1.1 Cache Aside Pattern(缓存模式)

读:

1. 先读缓存,再读数据库

2. 如果缓存命中,则直接返回缓存数据

3. 如果缓存未命中,则访问数据库,并将数据重置回缓存,然后返回。

2345_image_file_copy_233.jpg

写:

先操作数据库写,再淘汰缓存(这里淘汰缓存是删除,而不是更新)

2345_image_file_copy_234.jpg

Jedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码。

1.2 引入Jedis

1. 启动redis并在IDEA中创建一个maven工程

2345_image_file_copy_235.jpg

2. 引入maven依赖

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

3. 创建相关文件

2345_image_file_copy_236.jpg

1.3 常用方法

1. Jedis连接到redis

Jedis jedis = new Jedis("192.168.56.31",6379); //第一个参数是ip地址,第二个参数是端口

在连接之前,需要开放redis连接服务,即关闭redis.conf中的bind本机和关闭本机保护模式

2345_image_file_copy_237.jpg

通过systemctl stop firewalld.service命令关闭CentOS8防火墙

Jedis jedis = new Jedis("192.168.56.31",6379);
String msg = jedis.ping();//通过ping()方法向redis发送一个ping命令,服务器返回一个Pong
System.out.println(msg);
jedis.close();//jedis使用完毕需要关闭

2. String

jedis.set("k1","v1"); //设置一个key
jedis.set("k2","1");//设置一个key
String res = jedis.get("k1");//获取一个key
Long ires =  jedis.incr("k2");//对某一个key自增

3. Keys

Set<String> keys = jedis.keys("*");//返回所有的key
Long time = jedis.ttl("k1");//返回该key剩余过期时间

4. List

jedis.lpush("list1","v1","v2","v3");//向list中添加数据
List<String> list = jedis.lrange("list1",0,-1 );//返回list全部数据

5. Set

jedis.sadd("set1" ,"v1","v2","v2","v3");//向set中添加数据
jedis.smembers("set1");//查看该集合中有多少个元素

6. Hash

jedis.hset("user","age","25");//设置一个hash
jedis.hvals("user");//获取该key的所有value

7. Zset

jedis.zadd("zset1",100,"java");//向zset中添加一条数据
jedis.zrange("zset1",0,-1);//获取所有的值

8. Bitmaps

jedis.setbit("b1",0, "1");//将b1偏移量为0的位设置为1
jedis.getbit("b1",0);//获取b1偏移量为0的位

9. Geospatia

jedis.geoadd("chinacity",130,110,"beijing");//添加一条地理信息数据

10. Hyperloglog

jedis.pfadd("book","c++","java","php");//将所有元素参数添加到 Hyperloglog 数据结构中。

其实jedis中的方法基本同redis命令一致。

2345_image_file_copy_238.jpg


目录
相关文章
|
8月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
2281 7
|
9月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
712 3
|
缓存 NoSQL 架构师
Redis批量查询的四种技巧,应对高并发场景的利器!
在高并发场景下,巧妙地利用缓存批量查询技巧能够显著提高系统性能。 在笔者看来,熟练掌握细粒度的缓存使用是每位架构师必备的技能。因此,在本文中,我们将深入探讨 Redis 中批量查询的一些技巧,希望能够给你带来一些启发。
Redis批量查询的四种技巧,应对高并发场景的利器!
|
存储 缓存 NoSQL
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
372 1
|
缓存 NoSQL 关系型数据库
云端问道21期实操教学-应对高并发,利用云数据库 Tair(兼容 Redis®)缓存实现极速响应
本文介绍了如何通过云端问道21期实操教学,利用云数据库 Tair(兼容 Redis®)缓存实现高并发场景下的极速响应。主要内容分为四部分:方案概览、部署准备、一键部署和完成及清理。方案概览中,展示了如何使用 Redis 提升业务性能,降低响应时间;部署准备介绍了账号注册与充值步骤;一键部署详细讲解了创建 ECS、RDS 和 Redis 实例的过程;最后,通过对比测试验证了 Redis 缓存的有效性,并指导用户清理资源以避免额外费用。
293 1
|
消息中间件 缓存 NoSQL
Redis 高并发竞争 key ,如何解决这个难点?
本文主要探讨 Redis 在高并发场景下的并发竞争 Key 问题,以及较为常用的两种解决方案(分布式锁+时间戳、利用消息队列)。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Redis 高并发竞争 key ,如何解决这个难点?
|
缓存 NoSQL 中间件
redis高并发缓存中间件总结!
本文档详细介绍了高并发缓存中间件Redis的原理、高级操作及其在电商架构中的应用。通过阿里云的角度,分析了Redis与架构的关系,并展示了无Redis和使用Redis缓存的架构图。文档还涵盖了Redis的基本特性、应用场景、安装部署步骤、配置文件详解、启动和关闭方法、systemctl管理脚本的生成以及日志警告处理等内容。适合初学者和有一定经验的技术人员参考学习。
829 7
|
5月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
|
缓存 NoSQL Java
Java高并发实战:利用线程池和Redis实现高效数据入库
Java高并发实战:利用线程池和Redis实现高效数据入库
1087 0
|
存储 NoSQL Java
探索Java分布式锁:在高并发环境下的同步访问实现与优化
【6月更文挑战第30天】Java分布式锁在高并发下确保数据一致性,通过Redis的SETNX、ZooKeeper的临时节点、数据库操作等方式实现。优化策略包括锁超时重试、续期、公平性及性能提升,关键在于平衡同步与效率,适应大规模分布式系统的需求。
507 1

热门文章

最新文章