T086ѧϰ�� | վ��ѧԺ | �����ĵ� | ���� | Ъ���� | IP��ַ��ѯ | �������� | ���ջ��� | �����ֵ� | ���ù��� | ������Ϣ��ѯ

TimYang:Redis������ʶ����

�� ���ߣ�Timyang ����ʱ�䣺2010-12-05 | ���壺�� �� С��
[����]ǰ����΢��������һ������ϵͳ���ϣ��ܶ༼�������Ѷ��ȽϹ��ģ����е�ԭ�򲻻ᳬ��James Hamilton��On Designing and Deploying Internet-Scale Service(1)�������Ǽ�����Χ��James��һ������“Design for fai...

ǰ����΢��������һ������ϵͳ�������ܶ༼�������Ѷ��ȽϹ��ģ����е�ԭ�򲻻ᳬ��James Hamilton��On Designing and Deploying Internet-Scale Service(1)�������Ǽ�����Χ��James��һ������“Design for failure”�����л������ܹ��ɹ���һ���ؼ���������ϵͳ�Ĺ���������ʵ�dz��򵥣�James paper�����ݼ����Ʋ������ۣ����Ƕ���ʵ������������ÿ����˾����Щ���������⼰ִ���������˼ܹ��ɰܡ�

���⻰˵�꣬�������о���Redis��ȥ��������һ��MemcacheDB, Tokyo Tyrant, Redis performance test����ĿǰΪֹ������benchmark������Ȼ��Ч����1�����Ǿ����˺ܶ��ۻ����ҵ�key value�洢��Ʒ���ջ󣬴�Cassandra�ĵ���(Twitter��ͣ����ҵ��ʹ��)��HBase������(Facebook�µ�����ҵ��ѡ��HBase(2))�����ٻ�ͷ��ȥ��Redis����������ֻ��1������Դ�����ij������������漰����δ���ھ������ԡ�Redis���ܾ��ˣ�����ǰʮ����վ���Ӳ�Ʒ������1̨Redis�Ϳ��������洢��Cache�����󡣳�������ӡ��֮�⣬ҵ����ʵ�ձ���Redis����ʶ����һ����������������һЩ�۵㹩����̽�֡�

1. Redis��ʲô

���������Ľ���Ӱ����������ô��Redis����������ΪRedis��һ��key value store, �ǿ��ܻ�����������MySQL��������Ϊ����һ�����Գ־û���cache, ����ֻ��������һЩƵ�����ʵ���ʱ���ݡ�Redis��REmote DIctionary Server����д����Redis�ڹٷ���վ�ĵĸ�������A persistent key-value database with built-in net interface written in ANSI-C for Posix systems����������ƫ��key value store������һЩ��������ΪRedis��һ��memory database����Ϊ���ĸ����ܶ��ǻ����ڴ������Ļ���������һЩ������ΪRedis��һ��data structure server����ΪRedis֧�ָ��ӵ��������ԣ�����List, Set�ȡ���Redis�����õIJ�ͬ��������������Redis��ʹ�÷�ʽ��

����������Ŀǰ����ʹ�����ַ�ʽ���洢����ϵ���ݿ�����key value��������Щ������ҵ���������������������������ͣ������û������ữƽ̨�еĹ�ϵ������һ��list������Ҫ�ù�ϵ���ݿ��洢����Ҫת����һ�ֶ��м�¼����ʽ��������ʽ���ںܶ��������ݣ�ÿһ����Ҫ�洢һЩ�ظ���Ϣ��������key value�洢���޸ĺ�ɾ���Ƚ��鷳����Ҫ��ȫ�����ݶ�����д�롣Redis���ڴ��������˸����������ͣ���ҵ���ܹ�����ԭ�ӵķ�����Щ���ݽṹ�����Ҳ���Ҫ���ij־ô洢�����⣬�Ӽܹ��Ͻ�����ǰ�����ִ洢��Ҫ��һЩ��·�����⡣

2. Redis�����ܱ�Memcache��

�ܶ࿪���߶���ΪRedis�����ܱ�Memcached�죬Memcached��ȫ�����ڴ棬��Redis���г־û��������ԣ���ʹ���첽�ģ�RedisҲ�����ܱ�Memcached�졣���Dz��Խ���������Redisռ�������ơ�һֱ��˼������ԭ����Ŀǰ�뵽��ԭ�����⼸���档

  • Libevent����Memcached��ͬ��Redis��û��ѡ��libevent��LibeventΪ��ӭ��ͨ�������ɴ����Ӵ�(ĿǰRedis���뻹����libevent��1/3)�����������ض�ƽ̨�IJ������ܡ�Redis��libevent�������ļ��޸�ʵ�����Լ���epoll event loop(4)��ҵ�粻�ٿ�����Ҳ����Redisʹ������һ��libevent����������libev���������߻��Ǽ���RedisӦ��С�ɲ�ȥ������˼·��һ��ӡ�����̵�ϸ���DZ���Redis֮ǰ������Ҫִ��./configure��
  • CAS���⡣CAS��Memcached�бȽϷ�����һ�ַ�ֹ�����޸���Դ�ķ�����CASʵ����ҪΪÿ��cache key����һ�����ص�cas token��cas�൱value�汾�ţ�ÿ��set��token��Ҫ���������˴���CPU���ڴ���˫�ؿ�������Ȼ��Щ������С�����ǵ�����10G+ cache�Լ�QPS����֮����Щ�����ͻ���˫�����Դ���һЩϸ΢���ܲ���(5)��

3. ��̨Redis�Ĵ������ݱ����������ڴ�С

Redis������ȫ�������ڴ������˸��ٵ����ܣ�����Ҳ����һЩ������֮��������һ��������վ��100��ע���û���������Щ����Ҫ��Redis���洢���ڴ������������ܹ�������100���û�������ҵ��ʵ��������100���û�ֻ��5����Ծ�û���1�������ʹ�1�ε�Ҳֻ��15���û�������ȫ��100���û������ݶ������ڴ��в�����֮����RAM��ҪΪ�������򵥡�

��������ϵͳ�dz����ƣ�����ϵͳ����Ӧ�÷��ʵ����ݶ����ڴ棬�������������ڴ����ɲ����µ����ݣ�����ϵͳ�����ܽ����ֳ���û�з��ʵ����ݽ��������̣�Ϊ�µ�Ӧ�������ռ䡣�ִ�����ϵͳ��Ӧ���ṩ�IJ����������ڴ棬���������ڴ�(Virtual Memory)�ĸ��

������ͬ�Ŀ��ǣ�Redis 2.0Ҳ������VM���ԡ���Redis��������ͻ���������ڴ������ơ���ʵ�����������ȷ��롣

4. Redis��VMʵ�����ظ�������

Redis��VM����֮ǰ��epollʵ��˼·�������Լ�ʵ�֡�������ǰ������ϵͳ�Ľ����ᵽOSҲ�����Զ�������ʵ���������ݷ��룬Redisֻ��ҪOS����һ�����ڴ棬OS���Զ��������ݷ��������ڴ棬�����ݽ�����Ӳ�̣�����һ��֪����“�������ִ�����ϵͳ(3)”��Varnish��������ʵ�֣�Ҳȡ���˷dz��ɹ���Ч����

����antirez�ڽ���ΪʲôҪ�Լ�ʵ��VM���ᵽ����ԭ��(6)����ҪOS��VM���뻻���ǻ���Page�������OS VM1��Page��4K, 4K��ֻҪ����һ��Ԫ�ؼ�ʹֻ��1���ֽڱ����ʣ�����ҳҲ���ᱻSWAP, ����Ҳͬ������������һ���ֽڿ��ܻỻ��4K���õ��ڴ档��Redis�Լ�ʵ�������Դﵽ���ƻ��������ȡ��������ʲ���ϵͳSWAP�ڴ�����ʱblock���̣�Ҳ�ǵ���RedisҪ�Լ�ʵ��VMԭ��֮һ��

5. ��get/set��ʽʹ��Redis

��Ϊһ��key value���ڣ��ܶ࿪������Ȼ��ʹ��set/get��ʽ��ʹ��Redis��ʵ�����Ⲣ�������Ż���ʹ�÷�����������δ����VM�����£�Redisȫ��������Ҫ�����ڴ棬��Լ�ڴ�������Ҫ��

����һ��key-value��Ԫ��Ҫ��Сռ��512�ֽڣ���ʹֻ��һ���ֽ�Ҳռ��512�ֽڡ���ʱ������һ������ģʽ�����԰�key���ã�����key-value����һ��key�У�value����Ϊһ��set���룬����ͬ��512�ֽھͻ�����10-100����������

������Ϊ�˽�Լ�ڴ棬����ʹ��hashset������set/get�ķ�ʽ��ʹ��Redis����ϸ�������ο�����(7)��

6. ʹ��aof����snapshot

Redis�����ִ洢��ʽ��Ĭ����snapshot��ʽ��ʵ�ַ����Ƕ�ʱ���ڴ��Ŀ���(snapshot)�־û���Ӳ�̣����ַ���ȱ���dz־û�֮����������crash���ᶪʧһ�����ݡ����������������ߵ��ƶ�������������aof��ʽ��aof��append only mode����д���ڴ����ݵ�ͬʱ����������浽��־�ļ�����һ����������������ϵͳ�У�������־��һ���dz��Ӵ������ݣ�����ά���ɱ��dz��ߣ��ָ��ؽ�ʱ�����dz�������������ʧȥaof�߿����Ա��⡣��������Ҫ����Redis��һ���ڴ����ݽṹģ�ͣ����е����ƶ��ǽ����ڶ��ڴ渴�����ݽṹ��Ч��ԭ�Ӳ����ϣ������Ϳ���aof��һ���dz���Э���IJ��֡�

��ʵaofĿ����Ҫ�����ݿɿ��Լ��߿����ԣ���Redis��������һ�ַ������ﵽĿ�ģ�Replication������Redis�ĸ����ܣ����ƻ���û���ӳ١������ﵽ�˷�ֹ�������ϼ�ʵ���˸߿��á�

��

Ҫ���ɹ�ʹ��һ�ֲ�Ʒ��������Ҫ�����˽��������ԡ�Redis����ͻ���������ܹ������ļ�Ԧ���Թ��ںܶ�����Ӧ�þ��кܴ�������ϣ������ͬ�м��뵽Redisʹ�ü������о����С�

�����

  1. On Designing and Deploying Internet-Scale Service(PDF)
  2. Facebook’s New Real-Time Messaging System: HBase To Store 135+ Billion Messages A Month
  3. What’s wrong with 1975 programming
  4. Linux epoll is now supported(Google Groups)
  5. CAS and why I don’t want to add it to Redis(Google Groups)
  6. Plans for Virtual Memory(Google Groups)
  7. Full of keys(Salvatore antirez Sanfilippo)

-EOF-

ԭ�ģ�http://timyang.net/data/redis-misunderstanding/

  • ת����ע����Դ��ITѧϰ�� ��ַ��http://www.t086.com/ �����������Ƽ�������
  • �ر������� ��վ�������ر�������ֹת�ص�ר�������������¿�������ת�أ���������ע��������ԭʼ���ߡ����°�Ȩ������ԭʼ�������С����ڱ���վת�����µĸ��˺���վ�����DZ�ʾ������л�⡣������վת�ص������а�Ȩ��������ϵ���ǣ����ǻᾡ�����Ը�����
������ѯ Health Check Gulangyu
© 2017 T086ѧϰ�� - T086.com(ԭitlearner.com)
RunTime:7.59ms QueryTime:7