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

[教程]为PHP安装phpRedis扩展模块

一.安装phpredis

# wget https://download.github.com/owlient-phpredis-2.1.1-1-g90ecd17.tar.gz
# tar -zxvf owlient-phpredis-2.1.1-1-g90ecd17.tar.gz
# cd owlient-phpredis-2.1.1-1-g90ecd17
# /usr/local/php/bin/phpize
# ./configure –with-php-config=/usr/local/php/bin/php-config
# make && make install

修改php.ini文件,应用扩展

# /usr/local/php/etc/php.ini
加入:
extension=redis.so

重启httpd

# service httpd -k restart

我这里使用的是php-fpm模块运行的Nginx

/usr/local/php/sbin/php-fpm restart

通过phpinfo()函数查看,可以看到redis扩展 Continue reading