开发者必知redis知识点


剖析Redis常用数据类型对应的数据结构

redis中的COW(Copy-On-Write)

https://www.jianshu.com/p/b2fb2ee5e3a0

redis常用有哪些数据类型及每种数据类型的使用场景有哪些

如果存储一个JSON数据时,选择hash还是string 存储数据?


redis与memcache的区别


redis支持多CPU吗?如何发挥多cpu?


redis为什么这么快?底层设计原理说明


redis有哪几种持久化方式?分别有什么不同?

redis为单线程还是多线程,为什么这样设计?

redis中用到哪些数据结构和算法?

redis中用到的IO多路复用机制如何理解?

redis的过期策略有哪些?


redis高可用方案有哪些?


redis中的分布式锁如何理解


reids中的RedLock了解过吗?介绍一下


redis的分区

高可用性中的一致性算法原理

大厂Redis 性能优化的 13 条军规

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

新浪微博开放平台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