序
之前讲到了使用django-redis作为项目缓存,其实redis的作用不仅仅只有缓存,诸如消息队列、关系等都可以通过redis来实现,下面主要是redis的一些简介和基础知识
redis的优势
-
Redis主要特点如下:
-
Redis数据库完全在内存中,使用磁盘仅用于持久性
-
相比许多键值数据存储,Redis拥有一套较为丰富的数据类型
-
Redis可以将数据复制到任意数量的从服务器
-
Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录
-
所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值
-
redis数据类型
-
字符串:Redis字符串是二进制安全的,这意味着他们有一个已知的长度没有任何特殊字符终止,所以你可以存储任何东西,512兆为上限。
-
哈西:Redis的哈希是键值对的集合。 Redis的哈希值是字符串字段和字符串值之间的映射,因此它们被用来表示对象。
-
列表:Redis的列表是简单的字符串列表,排序插入顺序。您可以添加元素到Redis的列表的头部或尾部。列表的最大长度为 2^32 - 1 个元素。
-
集合:Redis的集合是字符串的无序集合。
-
有序集合:Redis的有序集合类似于Redis的集合,字符串不重复的集合。不同的是,虽然成员具有唯一性,分数可能会重复。
redis的启动和安装
-
安装:
-
下载页面: http://redis.io/
-
sudo make test
-
sudo make install
-
-
服务器启动:
-
普通启动:redis-server
-
传递参数配置文件,并覆盖某些参数:redis-server path/to/redis/confug.conf –loglevel warning
-
-
客户端启动:
-
本地:redis-cli
-
redis-cli -h host -p port -a password 远程启动
-
检查是否处于工作状态:
$redis-cli redis 127.0.0.1:6379> ping PONG
或者使用echo命令检测
-
-
多数据库
- 默认支持16个数据库,建立连接后自动选择0,可通过select 1进行切换,不支持单独为某一数据库设置密码。尽量保证某一应用只针对在某一数据库。
redis的一些术语
-
事务: 在一个事务中的所有命令按顺序执行作为单个隔离操作。通过另一个客户端发出的请求在Redis的事务的过程中执行,这是不可能的。 Redis的事务具有原子性。原子意味着要么所有的命令都执行或都不执行
-
链接:Redis的连接命令基本上都是用于管理与Redis的服务器客户端连接。
-
还原:要恢复Redis的数据只需移动 Redis 的备份文件(dump.rdb)到 Redis 目录,然后启动服务器。
-
基准:Redis基准是公用工具同时运行Ñ命令检查Redis的性能。
-
客户端连接:Redis接受配置监听TCP端口和Unix套接字客户端的连接。 客户端套接字置于非阻塞状态,因为Redis使用复用和非阻塞I/O操作。
-
管道传输:客户端可以发送多个请求给服务器,而无需等待答复所有,并最后读取在单个步骤中的答复。这种技术的好处是极大地改善协议的性能。通过管道将慢互联网连接速度从5倍的连接速度提高到localhost至少达到百过倍
-
分区: 好处:
-
它允许更大的数据库,使用的多台计算机的存储器的总和。如果不分区,一台计算机的内存可支数量有限。
-
它允许以大规模的计算能力,以多个内核和多个计算机,以及网络带宽向多台计算机和网络适配器。
缺点:
-
通常不支持涉及多个键的操作。涉及多个键的Redis事务不能被使用。
-
当分区时,数据处理比较复杂,比如要处理多个RDB/AOF文件,使数据备份需要从多个实例和主机聚集持久性文件。
-
添加和删除的能力可能很复杂。
分类:
-
范围分区:范围分区被映射对象转化为具体的Redis实例的范围内实现。假定在本例中用户ID0〜ID10000将进入实例R0,而用户形成ID10001至20000号将进入实例R1等等。
-
散列分区:在这种类型的分区,一个散列函数(例如,模数函数)被用于转换键成数字,然后数据被存储在不同redis的实例
-