Windows安装Redis
首先Redis官方并不支持Windows,而Windows版的Redis是由MSOpenTech提供的支持,所以首先去下载一个发布版,我选择的是Redis-x64-3.2.100.zip压缩包,解压缩得到如下文件列表
html
EventLog.dll
Redis on Windows Release Notes.docx
Redis on Windows.docx
redis.windows.conf
redis.windows-service.conf
redis-benchmark.exe
redis-benchmark.pdb
redis-check-aof.exe
redis-check-a
继续阅读 »
安装Redis及启动
安装Redis
shell
apt-get install redis-server
启动服务
shell
/etc/init.d/redis-server start
连接服务
shell
redis-cli
查看redis的密码
shell
config get requirepass
设置redis密码
shell
config set requirepass 12345
进入redis
shell
redis-cli -h 127.0.0.1 -p 6379 -a 12345
php安装redis扩展
继续阅读 »
1. 连接数过高
Redis连接数过高,且没有修改进程能打开的最大文件数,当达到最大文件数限制时,Redis在accept新连接的时候会立即报错"Max open files",无法成功获取该连接,此时,listen socket是持续可读的状态,事件循环直接把CPU跑满。这种现象还可能与没有配置Redis配置文件中的timeout参数有关,不设timeout参数,Redis不会主动关闭僵尸连接,导致连接数越来越高,容易达到限制。
解决方法:1)config set timeout xx修改keeplive时间;2)client kill ip:port杀死一部分僵尸连接;3)修改系统参数,增加单进程能打开的最大文件数。
这一点M
继续阅读 »
redis https://github.com/antirez/redis/blob/5.0/src/adlist.h
https://github.com/antirez/redis/blob/5.0/src/adlist.c
结构体的定义
结构体的实现,双向链表的相关定义于adlist.h中
节点:
```C++
typedef struct listNode {
struct listNode *prev; //前一个节点
struct listNode *next; //后一个节点
void *value; //节点的值
} listNode;
more
迭代器:
C++
typedef s
继续阅读 »
Redis服务器搭建
安装
在命令行执行下面的命令:
$ wget http://download.redis.io/releases/redis-3.0.5.tar.gz
$ tar xzf redis-3.0.5.tar.gz
$ cd redis-3.0.5
$ make
继续阅读 »
redis官方网站专门说明了,redis不支持windows平台,但是Microsoft Open Tech开发并维护了一个windows版的redis,如下:
The Redis project does not officially support Windows. However, the Microsoft Open Tech group develops and maintains this Windows port targeting Win64. Learn more
继续阅读 »
1.下载源码
wget http://download.redis.io/releases/redis-2.8.19.tar.gz
2.解压
tar -zxf redis-2.8.19.tar.gz
3.make
make
4.install
sudo make install
5.服务配置
wget https://github.com/ijonas/dotfiles/raw/master/etc/init.d/redis-server
wget https://github.com/ijonas/dotfiles/raw/master/etc/redis.conf
sudo mv redis-ser
继续阅读 »
Redis学习总结
简介
起源:随着Web 2.0的蓬勃发展,网站数据快速增长,对高性能读写的需求越来越多,再加上网站上半结构化的数据比重越来越大。Redis由此应运而生。
定义:Redis是Remote Dictionary Server(远程字典服务)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。
继续阅读 »
再次看redis的分布式锁
话说以前我们也有用到这种需求, 在一个noSql数据库中,利用key的expire功能实现的一个锁,那时候因为memcache支持不是太好, 还是略有些问题,不能在很严苛的环境中使用。
主要是一个解锁时候的问题: 当clientA获得锁之后,进行后续逻辑block在某个地方,如果这个时间足够长,长过锁的有效时间(即set在memcache中的expires时间), 当clientA完成操作,解锁的时候,如果直接使用del操作, 很有可能就会把clientB刚刚完成的锁操作(set key)给删除掉。
解决的方法是在unlock前检查一下clientA自己之前的锁是否还有效, 然后再决定是否执行del
继续阅读 »
听上去很简单,然而并不是——今天我要说的是为仅配置为缓存、没有persistence的Redis实例进行备份和恢复。为什么要对缓存进行备份和恢复?每个人的需求都不一样,其中一种是为了debug:你必须复原一个与production一模一样的环境——不仅是db,还有缓存,否则一些问题就没法重现。
继续阅读 »