redis 与 spring整合 hash 增删改操作 list增删改操作
本人,对于以前redis的学习是非常痛苦的!近期将以前的东西捡起来。以博客的形式存储,以便于以后快速捡起来,并和广大同胞一起分享!
1):简单介绍
redis 是基于C语言开发。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
redis 是一个 缓存数据库(片面的理解) 既可以做缓存,也可以将数据持久化到磁盘中!
本人有通过redis的hash数据类型来做过购物车
spring配置文件 spring-redis.xml
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="6"></property>
<property name="minEvictableIdleTimeMillis" value="300000"></property>
<property name="numTestsPerEvictionRun" value="3"></property>
<property name="timeBetweenEvictionRunsMillis" value="60000"></property>
</bean>
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
<property name="poolConfig" ref="jedisPoolConfig"></property>
<property name="hostName" value="***.***.**.**"></property> 《更改ip》
<property name="port" value="6379"></property> 《更改 端口号》
<property name="timeout" value="15000"></property>
<property name="usePool" value="true"></property>
</bean>
<bean id="jedisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"></property>
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
</property>
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
</property>
</bean>
hash数据结构图
简单介绍一下:
注入redis数据源:
hash的操作方法
(1):获得hash数据类型的模板
//获得redis缓存HASH数据类型(散列)
HashOperations opsForHash = redisTemplate.opsForHash();
(2):通过 会员id 和 商品 id 得到商品信息
//判断该用户(的商品)在缓存中有没有该数据 hkey需为string类型
Order cacheOrder = (Order) opsForHash.get(order.getMemberId() + "", order.getGoodsId());
(3):存入信息 ,
//根据会员ID 以及 商品 ID 将数据存入缓存中 【opsForHash.put(key, hashKey, value);】value为object类型
opsForHash.put(order.getMemberId() + "", order.getGoodsId(), goodsOrder);
(4):修改商品库存(修改的原则是先对 value 数值进行修改 在将修改后的数值存入缓存中 会覆盖原来的缓存信息 )
//判断该用户(的商品)在缓存中有没有该数据 【先修改数值】
Order cacheOrder = (Order) opsForHash.get(order.getMemberId() + "", order.getGoodsId());
//更新修改后的缓存数据
opsForHash.put(order.getMemberId() + "", order.getGoodsId(), cacheOrder);
(5):删除缓存数据 【不过一般不会直接删除,只会做逻辑删除】
opsForHash.delete(key, hashKeys);
简单演示一下list的几种方法:
(1):获得list数类型
//获得redis缓存list数据类型
ListOperations opsForList = redisTemplate.opsForList();
(2):根据键名获得长度
Long size = opsForList.size(order.getMemberId() + "");
(3):添加信息
//将购物信息添加到缓存中 rightPush 依次有右边添加 leftPush依次由左边添加
opsForList.rightPush(order.getMemberId() +"" ,cacheOrder);
(4):获得list集合 【 0 ,-1 代表所有值】
//获得所有当前可以的所有信息
List<Order> range = opsForList.range(order.getMemberId() +"”, 0, -1);
llist数据类型适合于消息队列的场景:比如12306并发量太高,而同一时间段内只能处理指定数量的订单!必须满足先进先出的原则,其余订单处于等待
redis事务 :原子性,即 要不全部成功 要不全部失败
redis持久化 :rdb aof
RDB方式:
RDB持久化默认生成的文件名为dump.rdb
Redis.conf中可以配置,默认配置如下:【默认是开启RDB方式的】
save 900 1
save 300 10
save 60 10000
以上表示的意思是,【 满足任一条件 , 都会进行持久化 】
900秒之内对服务进行了至少一次修改
300秒之内服务器进行了至少10次修改
60秒之内对服务器进行了至少10000次修改。
AOF方式:
appendonly yes #启用aof持久化方式
# appendfsync always #每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
# appendfsync no #完全依赖os,性能最好,持久化没保证
本人在写博客的时候也借鉴了一些博友的资源!
redis 与 spring整合 hash 增删改操作 list增删改操作的更多相关文章
- Redis和Spring整合
Redis和Spring整合 Redis在这篇里就不做介绍了~以后系统的学学,然后整理写出来. 首先是环境的搭建 通过自己引包的方式,将redis和spring-redis的包引到自己的项目中,我项目 ...
- redis与spring整合实例
1)首先是redis的配置. 使用的是maven工程,引入redis与spring整合的相关jar包 <!-- redis服务 start--> <dependency> &l ...
- 分布式缓存技术redis学习系列(五)——redis实战(redis与spring整合,分布式锁实现)
本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...
- 分布式缓存技术redis系列(五)——redis实战(redis与spring整合,分布式锁实现)
本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...
- redis系列之5----redis实战(redis与spring整合,分布式锁实现)
本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...
- Redis跟Spring整合,sentinel模式
普通模式整合 一.在pom.xml中引入redis的依赖 <dependency> <groupId>org.springframework.data</groupId& ...
- redis和spring整合使用
第一步,在项目中加入redis的pom代码: <dependency> <groupId>redis.clients</groupId> <artifactI ...
- Redis + Jedis + Spring整合遇到的异常(转)
项目中需要用到缓存,经过比较后,选择了redis,客户端使用jedis连接,也使用到了spring提供的spring-data-redis.配置正确后启动tomcat,发现如下异常: Caused b ...
- redis与spring整合·
单机版: 配置spring配置文件applicationContext.xml <?xml version="1.0" encoding="UTF-8"? ...
随机推荐
- 以Administrator权限运行VS时无法拖入文件
解决办法 1.从任务管理器中关闭explorer进程(你会发现任务栏什么的都没有了) 2.从任务管理器启动explorer.exe(win8需要手动勾选"以管理员权限运行",win ...
- [转]windows下编译及使用libevent
http://www.cnblogs.com/luxiaoxun/p/3603399.html Libevent官网:http://libevent.org/ windows 7下编译: 编译环境: ...
- C# List 的一些操作 (两List元素是否想同,List是否包含在另一个List中)
一. 假设有两个List<T>对象 ,List1和List2,如下方法判断两个List是否相等 List1.All(List2.Contains) && List1.Cou ...
- AJAX-创建XMLHttpRequest对象
AJAX-创建XMLHttpRequest对象 1.XMLHttpRequest是AJAX的基础,所有现在浏览器都支持,用于在后台与服务器交换数据,也就意味着可以在不加载整个页面的情况下对整个页面进 ...
- Maven手动下载jar
首先,手动下载的jar一定要是官网上的哦.http://mvnrepository.com/ 在下载之前要在pom.xml里按照官网的格式添加节点,这步一定不能省. 然后迅雷下载jar到本地硬盘. 开 ...
- 如何从eclipse中下载并导入Github上的项目
eclipse导入项目,方法就是点击File ->Import,选择Existing Projects into Workspace 但前提是,你导入的这个项目原本就是用eclipse的构建的, ...
- Android Studio 小技巧/快捷键 合集
参考: http://jaeger.itscoder.com/android/2016/02/14/android-studio-tips.html 1. 书签(Bookmarks) 描述:这是一个很 ...
- Could not find com.android.tools.build:gradle:1.3.0.
* What went wrong: A problem occurred configuring project ':TZYJ_Android'.> Could not re ...
- EJB初识(通熟易懂)
转载自http://blog.csdn.net/jojo52013145/article/details/5783677,讲的很透彻,佩服,膜拜学习 1. 我们不禁要问,什么是"服务集群&q ...
- 80、Android Support v4、v7、v13的区别以及应用场景
一.简介 在 Android 开发中,为了使用高版本API的新特性,需要添加额外的包来使用这些新特性,这就是 Android Support 包 二.分类 Android Support v4: 这个 ...