本人,对于以前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增删改操作的更多相关文章

  1. Redis和Spring整合

    Redis和Spring整合 Redis在这篇里就不做介绍了~以后系统的学学,然后整理写出来. 首先是环境的搭建 通过自己引包的方式,将redis和spring-redis的包引到自己的项目中,我项目 ...

  2. redis与spring整合实例

    1)首先是redis的配置. 使用的是maven工程,引入redis与spring整合的相关jar包 <!-- redis服务 start--> <dependency> &l ...

  3. 分布式缓存技术redis学习系列(五)——redis实战(redis与spring整合,分布式锁实现)

    本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...

  4. 分布式缓存技术redis系列(五)——redis实战(redis与spring整合,分布式锁实现)

    本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...

  5. redis系列之5----redis实战(redis与spring整合,分布式锁实现)

    本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...

  6. Redis跟Spring整合,sentinel模式

    普通模式整合 一.在pom.xml中引入redis的依赖 <dependency> <groupId>org.springframework.data</groupId& ...

  7. redis和spring整合使用

    第一步,在项目中加入redis的pom代码: <dependency> <groupId>redis.clients</groupId> <artifactI ...

  8. Redis + Jedis + Spring整合遇到的异常(转)

    项目中需要用到缓存,经过比较后,选择了redis,客户端使用jedis连接,也使用到了spring提供的spring-data-redis.配置正确后启动tomcat,发现如下异常: Caused b ...

  9. redis与spring整合·

    单机版: 配置spring配置文件applicationContext.xml <?xml version="1.0" encoding="UTF-8"? ...

随机推荐

  1. [转载]Eclipse调试Java的10个技巧

    原文:http://www.oschina.net/question/82993_69439 我也特别喜欢的是Drop to frame. 在看这篇文章前,我推荐你看一下Eclipse 快捷键手册,我 ...

  2. Tencent://Message/协议的实现原理

    腾讯官方通过 Tencent://Message/协议可以让QQ用户显示QQ/TM的在线状态发布在互联网上:并且点击 XXX  ,不用加好友也可以聊天 官方链接: http://is.qq.com/w ...

  3. mac java 安装路径

    google了一下,发现了这篇文章Important Java Directories on Mac OS X,可以使用工具命令"/usr/libexec/java_home"来定 ...

  4. Files 的值“ < < < < < < < .mine”无效。路径中具有非法字符。

    出现这个问题的原因是,用svn时,发生了冲突.解决方法:先解决代码冲突,然后在你的工程OBJ/DEBUG目录下,找到 工程名.csproj.FileListAbsolute.txt的文件打开并删除含有 ...

  5. HDU 1394 Minimum Inversion Number(最小逆序数 线段树)

    Minimum Inversion Number [题目链接]Minimum Inversion Number [题目类型]最小逆序数 线段树 &题意: 求一个数列经过n次变换得到的数列其中的 ...

  6. 作品-系统-[原生开发]新蓝景CRM管理系统

    基于ThinkPHP开发 项目网址:http://www.xljchina.com.cn:8839/Admin/Login/login.html 开发性质:原生开发 系统类型:CRM

  7. asp.net webform 中使用Microsoft ASP.NET Web Optimization压缩js及css

    使用静态资源压缩可以合并静态资源文件减少客户端请求数量,压缩文件大小,减少网络流量的损耗. 注:只有通过web.config关闭调试功能,压缩才会生效 <system.web> <c ...

  8. win7、linux安装使用pip、mitmproxy

    安装pip https://pip.pypa.io/en/latest/installing.html 步骤: 下载 https://bootstrap.pypa.io/get-pip.py pyth ...

  9. OC中copy的使用

    @property内存管理策略的选择 1.非ARC 1> copy : 只用于NSString\block: 2> retain : 除NSString\block以外的OC对象: 3&g ...

  10. 主机映射Linux虚拟机硬盘到本地

    Windows7上面通过VMware装了一个ubuntu的虚拟机,为了方便在window下直接查看和编辑linux系统下的代码,就想着远程映射硬盘,把Ubuntu的硬盘映射到主机中. 硬盘映射需要Sa ...