Redis单线程架构

1 单线程模型

Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。

2 单线程模型每秒万级别处理能力的原因

(1)纯内存访问。数据存放在内存中,内存的响应时间大约是100纳秒,这是Redis每秒万亿级别访问的重要基础。

(2)非阻塞I/O,Redis采用epoll做为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接,读写,关闭都转换为了时间,不在I/O上浪费过多的时间。

(3)单线程避免了线程切换和竞态产生的消耗。

(4)Redis采用单线程模型,每条命令执行如果占用大量时间,会造成其他线程阻塞,对于Redis这种高性能服务是致命的,所以Redis是面向高速执行的数据库。

redis为什么要设计成单线程:https://hacpai.com/article/1470967571415

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. 绑定的主机地址 Continue reading

windows下php的redis扩展安装

windows下开发用的xampp集成的环境,想装个php-redis扩展,扩展的github地址:https://github.com/nicolasff/phpredis

注意下面redis压缩包命名规则 ”redis版本号 + php版本号 + 线程安全类型
windows下安装php5.5的redis扩展 - 范范snow - 我的小屋
看下自己phpinfo的信息
windows下安装php5.5的redis扩展 - 范范snow - 我的小屋
windows下安装php5.5的redis扩展 - 范范snow - 我的小屋
 就选择   ts-x86 的包下载,将下载解压后的 php_igbinary.dll和php_redis.dll放入php的ext目录下
然后修改php.ini,加入
  1. ; phpredis
  2. extension=php_igbinary.dll
  3. extension=php_redis.dll

重启apache,查看phpinfo就有redis扩展的信息了
windows下安装php5.5的redis扩展 - 范范snow - 我的小屋

新浪微博开放平台Redis实践(PPT+视频)

新浪微博对Redis的大量应用已经是业界闻名,说是全球最大的使用者可能也没什么问题。下面PPT的作者是新浪微博负责Redis使用工程师唐福林同学。为大家解答了微博为何要使用Redis,又是如何使用Redis的。

ppt文档pdf版见:http://vdisk.weibo.com/s/Er65NDit1Va

 
View more presentations from mysqlops

Redis系统性介绍

虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍。是一个很不错的Redis入门教程。

1.介绍

1.1 Redis是什么

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,当然还有和Memcached一样的 strings结构.Redis当然还包括了对这些数据结构的丰富操作。 Continue reading