背景:我们系统有一个下传单据接口由于上游推送重复单据[产生异步任务],消费任务的时候是多线程并发执行,导致我们的数据库有很多重复的脏数据,数据库由于业务原因无法加唯一性索引。 解决方案:使用redis的setnx命令实现分布式锁。 原理:setnx---> 这种加锁的思路是,如果 key 不存在,将 ...
分类:
其他好文 时间:
2018-12-15 15:54:58
阅读次数:
175
背景 在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实 ...
分类:
其他好文 时间:
2018-11-26 20:07:53
阅读次数:
145
string、list常用操作string数据创建、覆盖及设置过期时间127.0.0.1:6379>getkey1查看原来的key1的值"b"127.0.0.1:6379>setkey1123覆盖创建一个新的key1的string的值OK127.0.0.1:6379>getkey1查看"123"127.0.0.1:6379>setnxkey1456使用setnx来覆盖key
分类:
其他好文 时间:
2018-11-14 15:39:57
阅读次数:
216
redis处理过期key的方式: redis 当key过期的时候,会采取策略来清除掉key. 有以下三种方式: 立即清除(设置过期时间的时候,设置一下回调,当时间过期,直接删除掉key) 惰性清除(key过期的时候不会立即去清除掉key,等下次取数据的时候,判断是否过期,过期了就会删除掉key). ...
分类:
其他好文 时间:
2018-11-07 19:57:14
阅读次数:
161
String类型简介 String类型简介 String类型存储的值类型包括:字符串,整数类型,浮点数类型,String类型的相关命令可以对字符串和整数型元素进行一定的处理。 String类型存储的值类型包括:字符串,整数类型,浮点数类型,String类型的相关命令可以对字符串和整数型元素进行一定的 ...
分类:
其他好文 时间:
2018-10-30 10:17:26
阅读次数:
181
一、字符串 stringsPython操作Redis的redis模块对字符串(string)的主要操作函数包括:SET、GET、GETSET、SETEX、SETNX、MSET、MSETNX、INCR(INCRBY,DECR,DECRBY在python中庸同一个函数incr实现)、APPEND、SET... ...
分类:
编程语言 时间:
2018-10-28 16:18:07
阅读次数:
200
为何缓存? 目前磁盘IO和网络IO相对于内存IO的大幅度性能劣势,通过将高频使用的数据存储在离近CPU的位置,以减少传输时间,提高处理效率。 系统缓存: CPU在从内存里读取数据的时候,会额外的读许多数据到内存里; 各个输入输出之间用buffer保存一批数据统一发送和接收。 软件设计缓存: web服 ...
分类:
其他好文 时间:
2018-10-23 11:59:18
阅读次数:
194
SETNX key value 起始版本:1.0.0 时间复杂度:O(1) 将key设置值为value,如果key不存在,这种情况下等同SET命令。 当key存在时,什么也不做。SETNX是”SET if Not eXists”的简写。 返回值 Integer reply, 特定值: 1 如果key ...
分类:
编程语言 时间:
2018-09-20 01:11:16
阅读次数:
227
同一进程 重入锁 使用ReentrantLock获取锁的时候回判断当前线程是否为获取锁的线程,如果是则将同步的状态+1,释放锁的时候则将状态-1,只有将同步状态的次数置为0的时候才会是最终释放锁。 读写锁 使用ReentrantReadWriteLock,同时维护一对锁:读锁和写锁。当写线程访问时则 ...
分类:
编程语言 时间:
2018-09-18 22:42:05
阅读次数:
239
1. redis加锁分类 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时,如果返回的数大于 1 ,说明这个锁正在被使用当中。 3. 第二种锁SETNX 这种加锁 ...
分类:
其他好文 时间:
2018-09-17 11:47:47
阅读次数:
207