一. 键的生存时间

  1. expire设置一个已经存在的key的生存时间,到时间后redis自动删除这个<k,v>
  2. 命令
  1. expire 设置生存时间(单位/秒)
  2. pexpire设置生存时间(单位/毫秒)
  3. ttl/pttl 查看键的剩余生存时间
  4. persist 取消生存时间
  5. expireat [key] unix时间戳1351858600
  6. pexpireat [key] unix时间戳(毫秒)1351858700000
[注]:应用场景:
(1)限时优惠活动
(2)网站数据缓存,一定时间后更新数据
(3)限制网站访客频率 (eg:每分钟最多访问10次)

二. redis事务

  1. 事务控制原理 :

    当事务开启后, 一条redis操作语句不会立刻执行,而是先缓存起来, 等到事务内的语句全部缓存后, 再一起执行

    事务控制,使得一组操作不被其他线程的操作插入, 并且保持所有语句全部执行或全部不执行
  2. 操作

    multi 事务开始

    exec 事务结束,开始执行事务中的命令

    discard 放弃事务
127.0.0.1:6379> multi   #开启事务
OK
127.0.0.1:6379> set aaa 1
QUEUED
127.0.0.1:6379> lpush aaa 4
QUEUED
127.0.0.1:6379> get aaa
QUEUED
127.0.0.1:6379> exec #执行事务,结果如下
1) OK
2) (error) WRONGTYPE Operation against a key holding the wrong kind of value
3) "1" # 上一条操作失败,但这一条操作成功
 [注] : redis在缓存命令时, 会检查命令的语法是否正确(编译时异常),发现编译时异常,redis的事务会让这一组操作全部失败
但是, redis发生运行时异常时,只是这句运行时异常的命令执行失败,而事务里的其他命令会执行成功.
因为,redis没有事务回滚机制,当缓存数据时没发现语法错误,则redis默认命令全部正确(例入lpush str1 a不被检查出来),逐条执行

三. watch

  1. 作用 :

    当一个客户端连接用watch监控一个变量,随后multi开启事务,在事务开启且未被执行时,若监控的变量值发生变化,则该客户端开启的事务执行失败,exec命令返回nil
  2. exec执行事务后,watch操作自动失效
  3. unwatch取消监控

    [注]: watch不提供通至客户端回调,只是一次性的控制事务是否被执行

四. Jedis

/**
* jedis连接池
*/
public class RedisTool {
private static JedisPool pool = null;
private static String host;
private static int port;
public static synchronized Jedis getJedis(){
if(pool==null){
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(100);
config.setMaxIdle(10);
config.setMaxWaitMillis(10000);
config.setTestOnBorrow(true);
pool = new JedisPool(config,host,port,10000);
}
System.out.println("获取链接中。。");
Jedis jedis = pool.getResource();
System.out.println("链接获取成功");
return jedis;
}
public static void setHostandPort(String host,int port){
RedisTool.host = host;
RedisTool.port = port;
} public static void returnJedis(Jedis jedis){
pool.returnResourceObject(jedis);
}
}

3. redis的超时,事务,watch的更多相关文章

  1. Redis系列之key操作命令与Redis中的事务详解(六)

    序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...

  2. redis中的事务

    首先明白在java中线程和进程的区别: 1.什么是多线程? 是指一个应用程序同时执行多个任务,一般来说一个任务就是一个线程 ,而一个应用程序有一个以上的线程我们称之为多线程. 2.什么是进程? 进程是 ...

  3. 高并发场景系列(一) 利用redis实现分布式事务锁,解决高并发环境下减库存

    原文:http://blog.csdn.net/heyewu4107/article/details/71009712 高并发场景系列(一) 利用redis实现分布式事务锁,解决高并发环境下减库存 问 ...

  4. 第四节:Geo类型介绍以及Redis批量操作、事务、分布式锁

    一. Geo类型 1. 类型说明 Geo 是 Redis 3.2 版本后新增的数据类型,用来保存兴趣点(POI,point of interest)的坐标信息.可以实现计算两 POI 之间的距离.获取 ...

  5. 利用redis实现分布式事务锁,解决高并发环境下库存扣减

    利用redis实现分布式事务锁,解决高并发环境下库存扣减   问题描述: 某电商平台,首发一款新品手机,每人限购2台,预计会有10W的并发,在该情况下,如果扣减库存,保证不会超卖 解决方案一 利用数据 ...

  6. Redis 中的事务

    Redis支持简单的事务 Redis与mysql事务的对比 Mysql Redis 开启 start transaction muitl 语句 普通sql 普通命令 失败 rollback 回滚 di ...

  7. Redis 学习(三) —— 事务、消息发布订阅

    一.Redis事务 Redis 提供的事务机制与传统的数据库事务有些不同,传统数据库事务必须维护以下特性:原子性(Atomicity), 一致性(Consistency),隔离性(Isolation) ...

  8. Redis数据库 02事务| 持久化| 主从复制| 集群

    1. Redis事务 Redis不支持事务,此事务不是关系型数据库中的事务: Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的 ...

  9. 三、redis系列之事务

    1. 绪言 Redis也提供了事务机制,可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞.但Redis对事务的支持是部分支持 ...

随机推荐

  1. C++ Primer : 第二章:变量和基本类型(1)

    变量和基本类型之第一篇:基本内置类型和变量 一. (1) C++定义了一套包括算数类型和空类型,这些类型有:布尔类型bool,字符类型char,宽字符类型wchar_t,Unicode字符char16 ...

  2. 学霸网站之NABCD

    1.需求(Need) 随着社会的发展,互联网产业得到了飞速的发展,如今,互联网在各个领域都取得了至关重要的作用,随之而来的数量庞大的数据也让我们每个人在学习生活中倍感压力,如何才能在这些数据中找到自己 ...

  3. hadoop常用管理员命令

    hadoop job -list 列出正在运行的job hadoop job -kill kill掉job hadoop fsck 检查HDFS坏快 hadoop dfsadmin -report检查 ...

  4. android解析json包(接口)

    package com.http.test; 02    03    04 import org.apache.http.HttpResponse; 05 import org.apache.http ...

  5. spring之bean的作用域scope的值的详解

    今天研究了一下scope的作用域.默认是单例模式,即 scope="singleton".另外scope还有prototype.request.session.global ses ...

  6. linux中的find命令——查找文件名

    1.在某目录下查找名为“elm.cc”的文件 find /home/lijiajia/ -name elm.cc 2.查找文件名中包含某字符(如"elm")的文件 find /ho ...

  7. MySQL-python模块

    1.  Python 操作 Mysql 模块的安装 linux: pip install MySQL-python 或 yum -y install MySQL-python windows: exe ...

  8. Java之JUC系列:外部Tools

    前面写了两篇JDBC源码的文章,自己都觉得有点枯燥,先插一段JUC系列的文章来换换胃口,前面有文章大概介绍过JUC包含的东西,JUC体系包含的内容也是非常的多,不是一两句可以说清楚的,我这首先列出将会 ...

  9. 转(JSONP处理跨域事件)

     前言: 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Soc ...

  10. python datetime

    不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 ...