一.官方文档 简单介绍下redis的几个事务命令: redis事务四大指令: MULTI.EXEC.DISCARD.WATCH. 这四个指令构成了redis事务处理的基础. 1.MULTI用来组装一个事务:2.EXEC用来执行一个事务:3.DISCARD用来取消一个事务: 4.WATCH类似于乐观锁机制里的版本号. 被WATCH的key如果在事务执行过程中被并发修改,则事务失败.需要重试或取消. 以后单独介绍. 下面是最新版本的spring-data-redis(2.1.3)的官方手册. htt…
在spring boot中,默认集成的redis是Spring Data Redis,Spring Data Redis针对redis提供了非常方便的操作模版RedisTemplate idea中新建spring boot项目的时候,引入Spring Data Redis依赖: 创建成功后的项目依赖pom.xml如下: 其实spring-boot-starter-data-redis依赖中就包含了spring-data-redis依赖 application.properties中配置redis…
http://blog.mkfree.com/posts/515835d1975a30cc561dc35d spring-data-redis API:http://docs.spring.io/spring-data/redis/docs/1.5.1.RELEASE/api/ 首先跟大家道歉,为什么呢?在不久之前,写了一篇http://blog.mkfree.com/posts/12,简单地使用是没有问题的,但如果在并发量高的时候,问题就会慢慢出现了,是什么问题呢? 当在高并发的情况下,向re…
Spring Data Redis对字符串的操作,封装在了ValueOperations和BoundValueOperations中,在集成好了SPD之后,在需要的地方引入: // 注入模板操作实例 @Autowired private RedisTemplate template; // 从模板中取出对应的操作类实例 @Resource(name = "redisTemplate") private ValueOperations valueOps; 由于存储在Redis中的键和值通…
说明:Spring Boot简化了Spring Data Redis的引入,只要引入spring-boot-starter-data-redis之后会自动下载相应的Spring Data Redis和Jedis客户端,可以减少版本这块的冲突,当然,如果要引入别的版本也是可以的.版本控制全部交由Parent引入的Spring Boot节点进行管理!,建议不要引入最新版本的spring-boot-starter-data-redis,避免造成其它冲突. 有个假设:如果在使用Spring/Spring…
说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Spring有冲突,要看官方文档和不断的测试. 继上一篇文章http://www.cnblogs.com/EasonJim/p/7804545.html使用Spring Data Redis操作Redis用的是单机版,如果是集群版的集成其实差别不大.主要思路如下: 1.先建立连接工厂,这个连接工厂是用来…
说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Spring有冲突,要看官方文档和不断的测试. Jedis是一款Java连接Redis的客户端,Spring基于Jedis进行了封装,提供了简洁的操作Redis的方法.那就是Spring Data Redis.其实后来研究发现,Spring Data Redis集成不止Jedits这一款,还有很多款,这…
将对象存为Redis中的hash类型,可以有两种方式,将每个对象实例作为一个hash进行存储,则实例的每个属性作为hash的field:同种类型的对象实例存储为一个hash,每个实例分配一个field,将对象序列化后,作为该field的值: 假设有Person类: public class Person { private String name; private String age; -- } 第一种方式存储的结果为: 第二种方式存储的结果为: 因此,Spring Data Redis处理h…
http://maven.springframework.org/release/org/springframework/data/spring-data-redis/(spring-data包下载) Spring-data-redis:特性与实例 博客分类: Redis   Spring-data-redis为spring-data模块中对redis的支持部分,简称为“SDR”,提供了基于jedis客户端API的高度封装以及与spring容器的整合,事实上jedis客户端已经足够简单和轻量级,…
一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis,走了不少弯路,所以总结一条我认为不错的学习路径给大家: 1.<The Little Redis Book> 是一本开源PDF,只有29页的英文文档,看完后对Redis的基本概念应该差不多熟悉了,剩下的可以去Redis官网熟悉相关的命令. 2.<Redis设计与实现> 如果想继续深入,推…
SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问Redis的功能.它提供了与商店互动的低级别和高级别抽象,使用户免受基础设施问题的困扰. Spring Boot 实战 引用依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis&…
[编者按]本文作者为 Xinyu Liu,文章的第一部分重点概述了 Redis 方方面面的特性.在第二部分,将介绍详细的用例.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 把 Redis 当作数据库的用例 现在我们来看看在服务器端 Java 企业版系统中把 Redis 当作数据库的各种用法吧.无论用例的简繁,Redis 都能帮助用户优化性能.处理能力和延迟,让常规 Java 企业版技术栈望而却步. 1. 全局唯一增量计数器 我们先从一个相对简单的用例开始吧:一个增量计数器,可显示某网…
[编者按]本文作者为 Xinyu Liu,详细介绍了 Redis 的特性,并辅之以丰富的用例.在本文的第一部分,将重点概述 Redis 的方方面面.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 建立在 Java 企业版之上的多层体系结构是强大的服务器端编程解决方案.作为一名从业多年的 Java 企业版开发人员,我最满意的就是三层企业开发法:最下方是 JPA/Hibernate 持久层,中间是 Spring 或 EJB 应用层,最上方则是 web 层.对于较为复杂的用例,我用 BPM(…
本文是从为知笔记上复制过来的,懒得调整格式了,为知笔记版本是带格式的,内容也比这里全.点这里 为知笔记版本 Spring Data Redis 学习 Version 1.8.4.Release 前言 1.新功能 1.1.Spring Data Redis 1.8 新特性 1.2.Spring Data Redis 1.7 新特性 1.3.Spring Data Redis 1.6 新特性 1.4.Spring Data Redis 1.5 新特性 介绍 2.为什么选择Spring Data Re…
Spring Data 概述 Spring Data 用于简化数据库访问,支持NoSQL 和 关系数据存储,其主要目标是使数据库的访问变得方便快捷. SpringData 项目所支持 NoSQL 存储: MongoDB (文档数据库) Neo4j(图形数据库) Redis(键/值存储) Hbase(列族数据库) SpringData 项目所支持的关系数据存储技术: JDBC JPA Spring Data JPA JPA Spring Data : 致力于减少数据访问层 (DAO) 的开发量.…
起因 前两天上线了一个新功能,导致线上业务的缓存总是无法更新,报错也是非常奇怪,redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: 5,google到的原因是Spring data redis中的scan操作,它获取了redis的连接之后,在操作没有完全结束之前就把redis连接放回连接池,其它线程从连接池里复用该连接时,会导致数据读取的错误. bug修复 官方维护人员在src/main/java/org…
前言 Spring Data Redis project,应用了Spring概念来开发使用键值形式的数据存储的解决方案.我们(官方)提供了一个 "template" ,这是一个高级别的抽象,来发送和接收消息.你会注意到它与Spring框架对JDBC的支持有些类似. 为什么选择Spring Data Redis? Spring框架,是引领潮流的全栈Java/JEE应用框架.它提供了一个轻量级容器,一种非侵入式的编程模型 -- 这是由依赖注入.AOP.以及便携的服务抽象开启的.   SDR…
说明 关于Redis:一个基于键值对存储的NoSQL内存数据库,可存储复杂的数据结构,如List, Set, Hashes. 关于Spring Data Redis:简称SDR, 能让Spring应用更加方便配置和访问Redis. 本工程基于spring boot ,spring data redis,  spring io platform实现. POM配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi…
spring data redis集成了几个Redis客户端框架,Jedis , JRedis (Deprecated since 1.7), SRP (Deprecated since 1.7) and Lettuce ,JRedis和SRP已经在spring data redis的1.7版本被弃用了,我们使用Jedis, JedisPool和JedisFatory类都是Jedis框架中的类,spring data redis 只是封装了工厂模式,提供了统一的RedisConnection 和…
环境要求:Redis 2.6及以上,javase 8.0及以上: 一.Spring Data Redis 介绍 Spring-data-redis是spring的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作.异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现.spring-data-redis针对jedis提供…
前言 Spring Data Redis project,应用了Spring概念来开发使用键值形式的数据存储的解决方案.我们(官方)提供了一个 "template" ,这是一个高级别的抽象,来发送和接收消息.你会注意到它与Spring框架对JDBC的支持有些类似. 为什么选择Spring Data Redis? Spring框架,是引领潮流的全栈Java/JEE应用框架.它提供了一个轻量级容器,一种非侵入式的编程模型 -- 这是由依赖注入.AOP.以及便携的服务抽象开启的.   SDR…
使用spring data jpa 的删除操作,需要加注解@Modifying     @Transactional 否则报错如下: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call 场景如下: 在service中,先执行 delete 操作,再执行 save操作 报错如下: No EntityManager with actu…
使用底层API:RedisConnectionFactory和RedisConnection可以直接操作Redis,下面是一个简单的例子: ### Maven依赖 <properties> <jedis.version>2.9.0</jedis.version> <spring.redis.version>1.8.2.RELEASE</spring.redis.version> </properties> <dependenci…
为什么使用Spring Data Redis 首先Spring Data Redis 是Spring 框架提供的用于操作Redis的客户端. Spring框架是一个全栈Java程序框架,通过DI.AOP和便携的服务抽象提供一个轻量的容器和非侵入编程模型支持. NoSQL存储为传统的关系型数据库提供了横向扩展和速度上的替代,Key-Value存储是目前NoSQL领域的主要成员. Spring Data Redis(SDR)框架通过消除冗余的.重复的集成代码,使Spring程序能简单的使用Redis…
spring data redis 序列化有jdk .jackson.string 等几种类型,自带的jackson不熟悉怎么使用,于是用string类型序列化,把对象先用工具类转成string,代码如下: application.xml中配置 <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory&qu…
Spring data redis的使用 一.Redis的安装和使用 Redis是用C语言开发的一个高性能键值对数据库,可用于数据缓存,主要用于处理大量数据的高访问负载. 下载地址:https://github.com/MicrosoftArchive/redis/releases 解压后:在当前地址栏输入cmd后,执行redis的启动命令:redis-server.exe redis.windows.conf 二.整合Redis 添加项目依赖 <!--redis依赖配置--> <dep…
一.常见概念 击穿: 概念:redis作为缓存,设置了key的过期时间,key在过期的时候刚好出现并发访问,直接击穿redis,访问数据库 解决方案:使用setnx() ->相当于一把锁,设置的时候,发现设置过期,加锁,只有获得锁的人才可以访问DB,这样就能防止击穿. 逻辑: 1. get key 2. setnx 3. if ok addDB else sleep go to 1 question1:如果第一个加锁的人挂了? 可以设置过期时间 question2:如果第一个加锁的人没挂,但是锁…
需求: 1,保存一个key-value形式的结构到redis 2,把一个对象保存成hash形式的结构到redis 代码如下: // 保存key-value值         pushFrequencyTemplate.opsForValue().set("test_key", "test_value111");         // 读取刚才保存的key-value值         System.out.println(pushFrequencyTemplate.…
1.Redis概述 1.1介绍 官网:https://redis.io/ Redis是一个开源的使用ANSIC语言编写.支持网络.可基于内存 亦可持久化的日志型.Key-Value型的高性能数据库. 1.2特性 1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. 2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. 3.Redis支持数据的备份,是单线程的. 2.Redis下载与…
Spring Data Redis隶属于Spring Data家族, 提供简单易用的方式来访问Redis缓存. Spring Data Redis在往Redis里面写数据的时候,默认会先对数据进行序列化,然后把序列化之后的字节码写入Redis:然后当Spring Data Redis从Redis里取数据的时候,会取出字节码进行反序列化操作,在反序列化的过程中没有对目标类进行校验和过滤,可导致远程任意代码执行. 攻击路径: 1.首先准备反序列化payload,参考ysoserial系列. 2.把生…