一. 键的生存时间

  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. 学霸网站之NABCD

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

  2. [luogu P2170] 选学霸(并查集+dp)

    题目传送门:https://www.luogu.org/problem/show?pid=2170 题目描述 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一 ...

  3. python3基础语法

    一.编码 默认情况下, python3源码文件以UTF-8编码,所有字符串都是unicode字符串.当然你也可以为源码文件指定不同的编码: # -*- coding: gbk -*- 二.标识符 1. ...

  4. (转) Written Memories: Understanding, Deriving and Extending the LSTM

    R2RT   Written Memories: Understanding, Deriving and Extending the LSTM Tue 26 July 2016 When I was ...

  5. T4 Templates

    T4 Templates and the Entity Framework https://msdn.microsoft.com/en-us/data/gg558520.aspx EF Designe ...

  6. Android 初阶自定义 View 字符头像

    自己很少做自定义 View ,只有最开始的时候跟着郭神写了一个小 Demo ,后来随着见识的越来越多,特别是在开源社区看到很多优秀的漂亮的控件,都是羡慕的要死,但是拉下来的代码还是看不明白,而且当时因 ...

  7. Spring3.1新属性管理API:PropertySource、Environment、Profile

    Spring3.1提供了新的属性管理API,而且功能非常强大且很完善,对于一些属性配置信息都应该使用新的API来管理.虽然现在Spring已经到4版本了,这篇文章来的晚点. 新的属性管理API Pro ...

  8. 九度OJ 1010:计算A+B【字符串和数组】

    /*======================================================================== 题目1010:A + B 时间限制:1 秒内存限制 ...

  9. 【转】ie8 不支持 position:fixed 的简单解决办法

    今天发现使用 position:fixed 的页面在firefox下没有问题,在IE8下却不能正常显示,在网上找了找,有不少相关文章,但是不是不起作用就是太复杂,后来终于发现一个简单的解决办法,就是在 ...

  10. httpclient详细介绍

    1.HttpClient简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...