• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

如果设置Redis客户端的超时时长

如果设置Redis客户端的超时时长
客户端的超时时长分连接超时和读写超时,如果是基于hiredis的实现,则读写超时是合在一起的,同一参数控制。在hiredis中,读写超时调用函数redisSetTimeout设置,可以看到没有区分读和写:int redisSetTimeout(redisContext *c, const struct timeval tv);而连接超时,则是在……继续阅读 »

海叔叔 4年前 (2021-09-02) 66浏览 0评论0个赞

如何保证最少消费一次redis的list队列数据

如何保证最少消费一次redis的list队列数据
简使用pop,不能保证最少消费一次,比如pop超时可能中途丢失,或者消费者处理过程中异常而未能处理完。解决此问题有多种方法:1) 方法一:使用rpoplpush替代pop这种方法相当于建立了一个回滚,由于操作是在redis端完成的,可保证数据不会丢,当消费者完成业务逻辑后,再清掉lpush的另一队列,这步有点类似于事务的commit提交。如果在处理过程……继续阅读 »

海叔叔 4年前 (2021-09-01) 57浏览 0评论0个赞

如何安全地使用redis的pop命令

如何安全地使用redis的pop命令
Redis的list经常被当作队列使用,左进右出,一般生产者使用lpush压入数据,消费者调用rpop取出数据。这是很自然的行为,然而有时会发现lpush成功,但rpop并没有取到数据,特别是一些客户端库封装了rpop操作,添加了调用者无感知的自动重试。数据凭空消失,找不到问题所在。实际上,这是所有网络类操作存在的共同的天生的问题,即网络超时,pop的数……继续阅读 »

海叔叔 4年前 (2021-09-01) 47浏览 0评论0个赞

redis基础redis特点

redis基础redis特点
redis作为非关系型数据库的一种,属于键值型数据存储,因为redis支持高并发的快速数据访问,所以在生产中多用来作为缓存使用,以提高数据读取效率,提高整个应用程序的并发性能。redis主要有以下特点1.支持多种数据结构2.支持持久化操作,支持用AOF和RDB两种数据持久化策略把数据持久化到磁盘;3.单线程请求,并发请求情况下不需要考虑数据一致性问题;……继续阅读 »

海叔叔 4年前 (2021-09-01) 30浏览 0评论0个赞

redis宕机快速恢复

redis宕机快速恢复
1、什么是哨兵哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个:1、监控主数据库和从数据库是否运行正常;2、主数据出现故障后自动将从数据库转化为主数据库;2、原理单个哨兵的架构:多个哨兵的架构:多个哨兵,不仅同时监控主从数据库,而且哨兵之间互为监控。多个哨兵,防止哨兵单点故障。3、环境当前处于一主多从的环境中:4、……继续阅读 »

海叔叔 4年前 (2021-09-01) 22浏览 0评论0个赞

redis源码阅读之util

redis源码阅读之util
这两个文件是用来提供一些公用函数的,首当其冲的就是类正则表达式的stringmatchlen函数,看了之后感觉是豁然开朗,感觉对正则表达式的实现多了点理解,又可以去LeetCode装x了~~自己惦着脸加了点中文注释:-)int stringmatchlen(const char *pattern, int patternLen, const char ……继续阅读 »

海叔叔 4年前 (2021-09-01) 27浏览 0评论0个赞

redis源码阅读之sds

redis源码阅读之sds
由于redis是用纯c写的,所以没有string那么高端的东西,所以它就自己实现了一个动态字符串的库,用于字符串处理,就是这个SDSLib了~~~在sdsalloc.h文件中,使用宏定义转换了如下几个函数#include "zmalloc.h"#define s_malloc zmalloc#define s_reallo……继续阅读 »

海叔叔 4年前 (2021-09-01) 55浏览 0评论0个赞

redis源码阅读之dict

redis源码阅读之dict
dict这两个文件是用来实现哈希表功能的,其原文是这样说的/* This file implements in-memory hash tables with insert/del/replace/find/ * get-random-element operations. Hash tables will auto-resize if neede……继续阅读 »

海叔叔 4年前 (2021-09-01) 30浏览 0评论0个赞