redis01�ϲ�����
1.redis�İ�װ����
���裺
mkdir -p /home/oldboy/tools mkdir -p /application cd /home/oldboy/tools wget -q http://download.redis.io/releases/redis-2.8.9.tar.gz tar xf redis-2.8.9.tar.gz cd redis-2.8.9 make make PREFIX=/application/redis-2.8.9 install ln -s /application/redis-2.8.9/ /application/redis
�ɹ��ı�־��
[root@redis01 redis-2.8.9]# tree /application/redis/bin/ /application/redis/bin/ ������ redis-benchmark ������ redis-check-aof ������ redis-check-dump ������ redis-cli ������ redis-server 0 directories, 5 files [root@redis01 redis-2.8.9]#
2.��װ�������˵��
redis-server :redis������daemon�����ij��� redis-cli��redis�����пͻ��˲������ߡ� redis-benchmark��redis���ܶ�д���Թ��ߣ�����Redis�����ϵͳ�����µĶ�д���� redis-check-aof���Ը�����־appendonly.aof��飬�Ƿ���ã�������mysql binlog���� redis-check-dump�����ڱ�����ݿ�rdb�ļ��ļ��
3.������redis
�����û�������
echo 'PATH=/application/redis/bin/:$PATH'>>/etc/profile source /etc/profile which redis-server /application/redis/bin/redis-server
��ָ��redis�����������ļ�
mkdir -p /application/redis/conf cd /home/oldboy/tools/redis-2.8.9/ cp redis.conf /application/redis/conf/
�ۺ�̨����redis
redis-server /application/redis/conf/redis.conf & sysctl vm.overcommit_memory=1 vim /etc/sysctl.conf #����������һ�� vm.overcommit_memory=1 sysctl -p /etc/sysctl.conf #������Ч
��vm.overcommit_memory����˵��
Ĭ��ֵ�� 0 ����ں��ĵ����ò������ֵ���ֱ��ǣ� 0�����û��ռ��������ڴ�ʱ���ں˳��Թ����ʣ��Ŀ����ڴ� 1���������������Ϊ1��ʱ���ں����?��ʹ���ڴ�ֱ������Ϊֹ����Ҫ���ڿ�ѧ���� 2�������ֵ����Ϊ2ʱ���ں˻�ʹ��һ����������ʹ���ڴ���㷨��swap+50%��RAMֵ��50%����������overcommit_ratio������
4.redis�Ŀ�����ر�
redis-cli shutdown save #��ر� redis-server /application/redis/conf/redis.conf & #����
5.ͨ��ͻ��˲���redis
[root@redis01 ~]# redis-cli 127.0.0.1:6379> 127.0.0.1:6379> set id 10 OK 127.0.0.1:6379> get id "10" 127.0.0.1:6379> del id (integer) 1 127.0.0.1:6379> get id (nil) 127.0.0.1:6379> exists id #0�����ڱ�ʾkey (integer) 0 127.0.0.1:6379> exists id #1������key (integer) 1 127.0.0.1:6379> set user001 xiaoming OK 127.0.0.1:6379> set user002 dalong OK 127.0.0.1:6379> set user003 lili OK 127.0.0.1:6379> keys * 1) "user003" 2) "user002" 3) "user001" 127.0.0.1:6379>
127.0.0.1:6379[1]> select 0 OK 127.0.0.1:6379> keys * 1) "user003" 2) "user002" 3) "user001" 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> keys * (empty list or set) 127.0.0.1:6379[1]> Զ�����ӣ� �ٰ�װ��redis [root@redis01 ~]# redis-cli -h 10.0.0.7 -p 6379 10.0.0.7:6379> [root@redis01 ~]# redis-cli -h 10.0.0.7 -p 6379 set userq xiaomlil OK [root@redis01 ~]# redis-cli -h 10.0.0.7 -p 6379 get userq "xiaomlil" [root@redis01 ~]# ��û�а�װredis [root@redis02 ~]# telnet 10.0.0.7 6379 #��һ̨û�а�װredis�ķ�����
6.help��ʹ��
10.0.0.7:6379> help set SET key value [EX seconds] [PX milliseconds] [NX|XX] summary: Set the string value of a key since: 1.0.0 group: string 10.0.0.7:6379> help @string 10.0.0.7:6379> help #��tab����Ҳ�ǿ��Ե�������֪����
7.redis��ȫ
a.Ϊredis�ͻ��������ⲿ�������룬redis�ںõķ������£�ÿ����Խ���1.5w�δ��빥�� vim /application/redis/conf/redis.conf requirepass oldboy #340����ӣ�����ģ��д��д ���������Ժ����� redis-cli shutdown redis-server /application/redis/conf/redis.conf & [root@redis01 ~]# redis-cli 127.0.0.1:6379> set key value (error) NOAUTH Authentication required. 127.0.0.1:6379> auth oldboy #��һ����֤�ķ�ʽ OK 127.0.0.1:6379> set key value OK 127.0.0.1:6379> [root@redis01 ~]# redis-cli -a oldboy #�ڶ�����֤�ķ�ʽ 127.0.0.1:6379> set k v OK 127.0.0.1:6379> b.renameҲ�ǰ�������ĸ�ʽ���ã��������ļ�������rename�������� vim /application/redis/conf/redis.conf rename-command get "" #354����� redis-cli -a oldboy shutdown #��֤����ر�-a auth����˼ redis-server /application/redis/conf/redis.conf & 127.0.0.1:6379> get key (error) ERR unknown command 'get' #���Կ�����������
8.Ϊphp��װredis�ͻ�����չ
Ϊphp��װredis�ͻ�����չ
��飺�����������мܹ�web01�ϲ��ԣ�IPΪ10.0.0.8������Ϊ������ 9��˵��Ϊ��php��װredi�ͻ������ ���ԣ� [root@web01 ~]# cd /home/oldboy/tools/ [root@web01 tools]# wget https://github.com/nicolasff/phpredis/archive/master.zip [root@web01 tools]# unzip master.zip [root@web01 tools]# cd phpredis-master/ [root@web01 phpredis-master]# /application/php/bin/phpize [root@web01 phpredis-master]# ./configure -with-php-config=/application/php/bin/php-config [root@web01 phpredis-master]# make && make install echo "extension = redis.so">>/application/php/lib/php.ini vim /application/php/lib/php.ini ��extension�ij� extension_dir = "/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/"
9���ԣ�˵�������β����������мܹ�web01�ϲ��ԣ���Ϊweb01�ͱ��ε�redis01��ͻ�����Ұ�redis02�ر���
mkdir -p /data/htdocs/www cd /data/htdocs/www [root@web01 www]# cat redis.php <?php $redis = new Redis(); $redis ->connect("10.0.0.7",6379); $redis ->auth("oldboy"); $redis ->set('name','oldboy'); $var =$redis ->get('name'); echo $var; ?> [root@web01 www]# /application/php/bin/php redis.php oldboy [root@web01 www]#
10.��python��װredis��redis01�ϲ��ԣ�
�����Ȱ�װredis��֧��python��ģ�飬ֻ�а�װ���ģ��python���ܲ���redis
cd /home/oldboy/tools/ # wget https://pypi.python.org/packages/source/r/redis/redis-2.10.1.tar.gz tar xf redis-2.10.1.tar.gz cd redis-2.10.1 python setup.py install
��python����redis��Ҳ�����������py�ļ��У�
[root@redis01 ~]# python Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56) [GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import redis >>> r = redis.Redis(host='10.0.0.7',port=6379,password='oldboy',db=0) >>> r.set("name","sanlang") True >>> r.get ('name') 'sanlang' >>> r.dbsize() 8L >>> r.keys() ['a', 'name', 'key', 'user001', 'user002', 'userq', 'user003', 'k']
�۷���һ�������ļ���
[root@redis01 ~]# cat rp.py import redis r = redis.Redis(host='10.0.0.7',port=6379,password='oldboy',db=0) r.set("name","dalong002") print r.get ('name') [root@redis01 ~]# [root@redis01 ~]# python rp.py dalong002
�ܴ˴����еĴ����Ŵ�
[root@li380-133 ~]# python Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import redis Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/root/redis.py", line 4, in <module> AttributeError: 'module' object has no attribute 'Redis' �ܹ�ٶȴ����ȸ��������������������ҵ����⡣ �Ұ��ļ�����Ϊredis.py����һ�����к����redis.pyc���Ժ����redis��import redis��������ֱ�ӵ���redis ����Ұ�redis.pycɾ���дredis.py��ƣ�һ����
11.���redis�������ļ�
1. RedisĬ�ϲ������ػ���̵ķ�ʽ���У�����ͨ����������ģ�ʹ��yes�����ػ���� daemonize no 2. ��Redis���ػ���̷�ʽ����ʱ��RedisĬ�ϻ��pidд��/var/run/redis.pid�ļ�������ͨ��pidfileָ�� pidfile /var/run/redis.pid 3. ָ��Redis����˿ڣ�Ĭ�϶˿�Ϊ6379���������Լ���һƪ�����н�����Ϊʲôѡ��6379��ΪĬ�϶˿ڣ���Ϊ6379���ֻ����MERZ��Ӧ�ĺ��룬��MERZȡ��������ŮAlessia Merz������ port 6379 4. �������ַ bind 127.0.0.1 5.���ͻ������öʱ���ر����ӣ����ָ��Ϊ0����ʾ�رոù��� timeout 300 6. ָ����־��¼����Redis�ܹ�֧���ĸ�����debug��verbose��notice��warning��Ĭ��Ϊverbose loglevel verbose 7. ��־��¼��ʽ��Ĭ��Ϊ��������������RedisΪ�ػ���̷�ʽ���У�������������Ϊ��־��¼��ʽΪ�����������־���ᷢ��/dev/null logfile stdout 8. ������ݿ��������Ĭ����ݿ�Ϊ0������ʹ��SELECT <dbid>������������ָ����ݿ�id databases 16 9. ָ���ڶʱ���ڣ��ж��ٴθ��²������ͽ����ͬ��������ļ������Զ��������� save <seconds> <changes> RedisĬ�������ļ����ṩ����������� save 900 1 save 300 10 save 60 10000 �ֱ��ʾ900�루15���ӣ�����1����ģ�300�루5���ӣ�����10������Լ�60������10000����ġ� 10. ָ���洢��������ݿ�ʱ�Ƿ�ѹ����ݣ�Ĭ��Ϊyes��Redis����LZFѹ�������Ϊ�˽�ʡCPUʱ�䣬���Թرո�ѡ����ᵼ����ݿ��ļ���ľ� rdbcompression yes 11. ָ��������ݿ��ļ���Ĭ��ֵΪdump.rdb dbfilename dump.rdb 12. ָ��������ݿ���Ŀ¼ dir ./ 13. ���õ�����Ϊslav����ʱ������master�����IP��ַ���˿ڣ���Redis����ʱ������Զ���master�������ͬ�� slaveof <masterip> <masterport> 14. ��master�������������뱣��ʱ��slav��������master������ masterauth <master-password> 15. ����Redis�������룬����������������룬�ͻ���������Redisʱ��Ҫͨ��AUTH <password>�����ṩ���룬Ĭ�Ϲر� requirepass foobared 16. ����ͬһʱ�����ͻ���������Ĭ�������ƣ�Redis����ͬʱ�Ŀͻ���������ΪRedis��̿��Դ�����ļ���������������� maxclients 0����ʾ�������ơ����ͻ��������������ʱ��Redis��ر��µ����Ӳ���ͻ��˷���max number of clients reached������Ϣ maxclients 128 17. ָ��Redis����ڴ����ƣ�Redis������ʱ�����ݼ��ص��ڴ��У��ﵽ����ڴ��Redis���ȳ�������ѵ��ڻ����ڵ�Key�����˷����������Ȼ��������ڴ����ã������ٽ���д�����������Ȼ���Խ��ж�ȡ������Redis�µ�vm���ƣ����Key����ڴ棬Value������swap�� maxmemory <bytes> 18. ָ���Ƿ���ÿ�θ��²����������־��¼��Redis��Ĭ����������첽�İ����д����̣�����������ܻ��ڶϵ�ʱ����һ��ʱ���ڵ���ݶ�ʧ����Ϊ redis����ͬ������ļ��ǰ�����save������ͬ���ģ������е���ݻ���һ��ʱ����ֻ�������ڴ��С�Ĭ��Ϊno appendonly no 19. ָ��������־�ļ���Ĭ��Ϊappendonly.aof appendfilename appendonly.aof #����������ʱ�������־���أ���ֹ����ݣ�Ĭ���������д������棬����Ļ���д�뱾�ص���ݿ�dump.rdb�� 20. ָ��������־����������3����ѡֵ�� no����ʾ�Ȳ���ϵͳ������ݻ���ͬ�������̣��죩 always����ʾÿ�θ��²������ֶ�����fsync()�����д�����̣���ȫ�� everysec����ʾÿ��ͬ��һ�Σ����ԣ�Ĭ��ֵ�� appendfsync everysec 21. ָ���Ƿ����������ڴ���ƣ�Ĭ��ֵΪno���Ľ���һ�£�VM���ƽ���ݷ�ҳ��ţ���Redis�����������ٵ�ҳ�������swap�������ϣ����ʶ��ҳ���ɴ����Զ��������ڴ��У��ں���������һ���ϸ����Redis��VM���ƣ� vm-enabled no 22. �����ڴ��ļ�·����Ĭ��ֵΪ/tmp/redis.swap�����ɶ��Redisʵ���� vm-swap-file /tmp/redis.swap 23. �����д���vm-max-memory����ݴ��������ڴ�,����vm-max-memory���ö�С,����������ݶ����ڴ�洢��(Redis��������ݾ���keys),Ҳ����˵,��vm-max-memory����Ϊ0��ʱ��,��ʵ������value�������ڴ��̡�Ĭ��ֵΪ0 vm-max-memory 0 24. Redis swap�ļ��ֳ��˺ܶ��page��һ��������Ա����ڶ��page���棬��һ��page�ϲ��ܱ���������?vm-page-size��Ҫ��ݴ洢����ݴ�С���趨�ģ����߽������洢�ܶ�С����page��С�������Ϊ32����64bytes�����洢�ܴ����������ʹ�ø���page�����ȷ������ʹ��Ĭ��ֵ vm-page-size 32 25. ����swap�ļ��е�page����������ҳ�?һ�ֱ�ʾҳ����л�ʹ�õ�bitmap�����ڷ����ڴ��еģ����ڴ�����ÿ8��pages�����1byte���ڴ档 vm-pages 134217728 26. ���÷���swap�ļ����߳���,��ò�Ҫ��������ĺ���,�������Ϊ0,��ô���ж�swap�ļ��IJ������Ǵ��еģ����ܻ���ɱȽϳ�ʱ����ӳ١�Ĭ��ֵΪ4 vm-max-threads 4 27. ��������ͻ���Ӧ��ʱ���Ƿ�ѽ�С�İ�ϲ�Ϊһ�����ͣ�Ĭ��Ϊ���� glueoutputbuf ye 28. ָ���ڳ���һ����������������Ԫ�س���ijһ�ٽ�ֵʱ������һ������Ĺ�ϣ�㷨 hash-max-zipmap-entries 64 hash-max-zipmap-value 512 29. ָ���Ƿ����ù�ϣ��Ĭ��Ϊ�����������ڽ���Redis�Ĺ�ϣ�㷨ʱ������ܣ� activerehashing yes 30. ָ��������������ļ���������ͬһ�����϶��Redisʵ��֮��ʹ��ͬһ�������ļ�����ͬʱ����ʵ����ӵ���Լ����ض������ļ� include /path/to/local.conf
12.redis���������
string hash list set sorted set
��string����
127.0.0.1:6379> strlen key (integer) 5 127.0.0.1:6379> substr key 0 2 "val" 127.0.0.1:6379> mset name xiaoming age 27 OK 127.0.0.1:6379> mget name age 1) "xiaoming" 2) "27" 127.0.0.1:6379>
��list����
127.0.0.1:6379> lpush student xiaoli (integer) 1 127.0.0.1:6379> lpush student dalong (integer) 2 127.0.0.1:6379> lpush student xiaoli (integer) 3 127.0.0.1:6379> llen student (integer) 3 127.0.0.1:6379> lrange student 0 1 1) "xiaoli" 2) "dalong" 127.0.0.1:6379> 127.0.0.1:6379> lpop student #��������ɾ�� "xiaoli" 127.0.0.1:6379> lpop student "dalong" 127.0.0.1:6379> lrange student 0 1 1) "xiaoli" 2) "1" 127.0.0.1:6379> 127.0.0.1:6379> lrem student 1 xiaoli (integer) 1 127.0.0.1:6379> lrem student 1 xiaoli (integer) 1 127.0.0.1:6379> linsert student before "liming" "sanlang" (integer) 4 127.0.0.1:6379> lrange student 0 3 1) "dalongg" 2) "sanlang" 3) "liming" 4) "xiaoli" 127.0.0.1:6379>
��sets����
127.0.0.1:6379> sadd user lada (integer) 1 127.0.0.1:6379> sadd user laoer laosan (integer) 2 127.0.0.1:6379> smembers user 1) "laosan" 2) "laoer" 3) "lada" 127.0.0.1:6379> sismember user lada #�鿴�Ƿ���ڴ��� (integer) 1 127.0.0.1:6379> sismember user xiaolili #������ (integer) 0 127.0.0.1:6379>
��sorted sets
127.0.0.1:6379> zadd days 1 zhouyi (integer) 1 127.0.0.1:6379> zadd days 2 zhouer (integer) 1 127.0.0.1:6379> zadd days 3 zhousan (integer) 1 127.0.0.1:6379> zrange days 0 1 1) "zhouyi" 2) "zhouer" 127.0.0.1:6379> zrange days 0 2 1) "zhouyi" 2) "zhouer" 3) "zhousan" 127.0.0.1:6379> zscore days zhousan #�鿴zhousan�ŵڼ� "3" 127.0.0.1:6379>
��hash�������
redis�ܹ��Դ洢key�Զ�����Ե����
127.0.0.1:6379> hset test name sanlang (integer) 1 127.0.0.1:6379> hset test age 18 (integer) 1 127.0.0.1:6379> hset test sex male (integer) 1 127.0.0.1:6379> hvals test 1) "sanlang" 2) "18" 3) "male" 127.0.0.1:6379>
13.redis�Ķ�ʵ��
vim /application/redis/conf/redis.conf dir /application/data/ mkdir -p /application/data/ redis-cli -a oldboy shutdown redis-server /application/redis/conf/redis.conf & [root@redis01 data]# redis-cli -a oldboy 127.0.0.1:6379> keys * 1) "name" 127.0.0.1:6379> save [29471] 27 Jun 10:06:04.475 * DB saved on disk OK 127.0.0.1:6379> quit [root@redis01 ~]# ll /application/data ������ 4 -rw-r--r-- 1 root root 36 6�� 27 10:06 dump.rdb #����˱�����ݿ��ļ�
mkdir -p /data/6380/data -p mkdir -p /data/6381/data -p cp /application/redis/conf/redis.conf /data/6380/ cp /application/redis/conf/redis.conf /data/6381/ cd /data/6380 vim redis.conf �����²��� port 6380 pidfile /data/6380/redis.pid dir /data/6380/ appendonly yes ����redis redis-server /data/6380/redis.conf & [root@redis01 6380]# lsof -i:6380 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME redis-ser 29527 root 4u IPv6 38476 0t0 TCP *:6380 (LISTEN) redis-ser 29527 root 5u IPv4 38478 0t0 TCP *:6380 (LISTEN) [root@redis01 6380]# redis-cli -p 6380 #��ʵ���¼ָ���˿�
���ij��� ��ש�Ҳ����� ���ͣ�л��ת�أ�