import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;
public class Simple6 {
public static void main(String[] args) {
isServerRunning();
Jedis client = getConnection();
client.hset("user:zhangsan", "query", "1");
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
byte[] buf = serilizable(list);
long index = 1;
//client.lpush("dat:zhangsan:query", "a");
client.lpush("dat:zhangsan:query".getBytes(), buf);
boolean exists = client.hexists("user:zhangsan", "query");
if(exists){
String userVal = client.hget("user:zhangsan", "query");
System.out.println("userVal = " + userVal);
}
//client.lpop("dat:zhangsan:query");
//client.ltrim("dat:zhangsan:query", -1, 0);
exists = client.exists("dat:zhangsan:query");
if(exists){
//String lVal = client.lindex("dat:zhangsan:query", 1);
byte[] lVal = client.lpop("dat:zhangsan:query".getBytes());
Object o = unserilizable(lVal);
List<String> lo = (List<String>)o;
System.out.println("lVal = " + lo.get(0));
}
transaction(client);
client.close();
}
//redis事务
private static void transaction(Jedis client){
Transaction tr = client.multi();
tr.hset("user:www", "query", "1");
tr.exec();
}
//ping
private static void isServerRunning(){
String host = "127.0.0.1";
Jedis jedis = new Jedis(host, 6379);
System.out.println("Connection to server sucessfully");
System.out.println("Server is running: "+jedis.ping());
}
static Jedis getConnection(){
String host = "127.0.0.1";
Jedis client = new Jedis(host, 6379);
return client;
}
static byte[] serilizable(Object o){
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream os = null;
try {
os = new ObjectOutputStream(bos);
os.writeObject(o);
return bos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
os.close();
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
static Object unserilizable(byte[] buf){
ByteArrayInputStream bis = new ByteArrayInputStream(buf);
ObjectInputStream os = null;
try {
os = new ObjectInputStream(bis);
Object o = os.readObject();
return o;
} catch (IOException e) {
e.printStackTrace();
} catch(ClassNotFoundException e){
e.printStackTrace();
}
finally{
try {
os.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
相关推荐
本文将深入探讨“SpringBoot-Redis事务”这一主题,旨在帮助开发者理解如何在SpringBoot项目中利用Redis进行事务操作。 首先,SpringBoot是Spring框架的一种快速启动方式,它简化了配置,提供了自动配置的功能,...
【Redis 事务与关系型数据库事务的比较】 Redis 和关系型数据库(如 MySQL)在事务处理上有显著的差异。在Redis中,事务提供了一种批量执行命令的方式,以确保原子性,但其机制与传统的ACID(原子性、一致性、隔离...
Redis 事务是数据库系统中的一种特性,允许用户一次性提交...例如,Redis事务不支持回滚操作,如果事务中的某条命令失败,后续命令仍会执行。因此,在设计使用Redis的事务时,需要考虑到这些限制并进行适当的错误处理。
基于SpringBoot的轻量级redis事务回滚机制,使用栈和ThreadLocal记录业务链的redis操作,发生异常进行回滚,参考了阿里巴巴Seata AT模式的db回滚策略:补偿回滚,记录前镜像与当前操作语句,反向解析生成补偿动作。...
Redis 事务(Transactions)是 Redis 数据库提供的一种批量执行命令的功能,尽管它的事务机制相比于传统的关系型数据库事务较为简化,但仍能满足一些基本的事务需求。Redis 事务的主要特点在于其简单、快速和高效,...
下面是对 Redis 的常用命令、配置文件、持久化、事务、主从复制、Jedis 使用的详细讲解。 Redis 常用命令 Redis 提供了很多有用的命令来管理和操作数据。下面是一些常用的 Redis 命令: * SET key value:设置...
【Redis事务】 Redis事务是Redis数据库中提供的一种确保数据操作原子性的机制,它允许用户在一个操作序列中执行多条命令,这些命令会被串行化并按顺序执行,以保证在并发环境下的数据一致性。事务的开启是通过`MULTI...
然而,事务处理并非总是顺利进行,"redis事务处理:(error) EXECABORT" 是一个常见的错误提示,意味着在执行事务时遇到了问题。本文将深入探讨这个错误的原因以及如何解决。 一、Redis 事务基础 Redis 的事务机制...
Redis 事务是 Redis 数据库提供的一种批量执行命令的机制,旨在提高数据操作的效率和原子性。虽然在传统的数据库系统中,事务具有ACID(原子性、一致性、隔离性和持久性)特性,但 Redis 事务并不完全具备这些特性。...
一、Redis事务简介 Redis事务可以一次执行多个命令,一个事务的所有命令都会序列化并按顺序地串行化执行,而不会被其他客户端提交的命令请求插入到事务执行命令序列中。 二、Redis事务命令 下面的表格节选自:...
Redis 事务(上).flv
在Redis中实现事务主要依靠以下几个命令来实现:Redis事务从开始到结束通常会通过三个阶段:1.事务开始2.命令入队3.事务执行以下是一个最简单的Redis事务流程:第一步跟其他的关系型数据库类似,也是需要开启一个事务...
一、Redis 事务的实现原理 一个事务从开始到结束通常会经历以下三个阶段: 1、事务开始 客户端发送 MULTI 命令,服务器执行 MULTI 命令逻辑。 服务器会在客户端状态(redisClient)的 flags 属性打开 REDIS_MULTI ...
redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?
本篇文章将详细探讨如何使用Redisson实现Redis分布式事务锁,以及在Spring Boot环境中如何进行集成。 首先,Redis作为一个内存数据库,其高速读写性能使其成为实现分布式锁的理想选择。分布式锁的主要作用是在多...
Redis事务和CAS(Check-And-Set)机制是Redis中用于处理并发操作的重要特性,确保数据的一致性和完整性。在高并发的网络活动中,如证券交易,这类机制是必不可少的。 Redis事务通过`MULTI`, `EXEC`, `DISCARD`, 和 ...
本文主要介绍了Redis事务的概念、Redis不保证原子性、Redis事务的三个阶段、Redis事务相关命令以及Redis事务使用案例。 本文来自于博客园,由火龙果软件Anna编辑、推荐。Redis事务的本质是一组命令的集合。事务支持...