前言:
redis集群搭建过很多次,也用过一些基础的命令,能解决一些常规的异常。但是因为平时对数据这块用得不多,一直没有很系统的学习过redis。这次将redis的知识好好学习了一下,记录为学习笔记《系统学习redis》系列。
NoSQL介绍
非关系型数据库:NoSQL
关系型数据库:MySQL、SQLserver、Oracle 关系型数据库在web2.0上对高并发,暴露出了一些性能问题
NoSQL 是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如遵循SQL标准、ACID属性、表结构等。
这类NoSQL数据库的特点:
- 非关系型的
- 分布式的
- 开源的
- 水平可扩展的
关于ACID属性:
例如小明和小红各有100块钱,现在让小明给小红转账100 ,那么小明的账户就减去100元,还剩0元,小红的账户加上100元,有200元,这个过程就称作一个事务。但是如果当小明的账户上减去了100元,服务器就宕机了,这会儿小红的账户还没有加上这100元,这个事务就没有完成。这时候小明的100就不会减成功,整个事务就会退回到初始状态。也就是说,要整个事务的所有流程都完成,这个事务才会真正执行成功;只要事务的有一个步骤没有成功,整个事务就会退回到初始状态。这就是ACID属性。
Nosql特点
1、处理超大量的数据;
2、运行在便宜的PC服务器集群上
3、击碎了性能瓶颈,比如MySQL需要很多优化,Nosql就不需要,性能非常高
NoSQL适用场景
1、对数据高并发读写:MySQL到进行上万次的查询可能还OK,但是上万次写的话,对硬盘I/O的要求非常高,可能会效率低下。NOSQL就会很轻松
2、对海量数据的高效率存储和访问
3、对数据的高可扩展性和高可用性。比如MySQL有变动的时候,改表结构什么的很麻烦,nosql就不需要,没有固定表结构
redis介绍
redis基础概念
Redis是一个开源的,先进的key-value存储。它通常被称为数据结构服务器,因为键可以包含字符串、哈希、链表、集合和有序集合
Redis是一个key-value存储系统。它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集和并集及更丰富的操作,Redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件
redis在新浪微博的使用方式
1、应用程序直接访问redis进行读写操作(redis一旦宕机,访问就崩掉了)
2、应用程序直接访问redis,当redis访问失败,就访问MySQL(MySQL和redis数据同步,如果redis宕机,也能访问到数据)
redis适用场合
1、适用于取最新的N个数据的操作;
2、适用于排行榜的应用:例如要取TOP1、TOP2等着这种TOPn的操作
3、适用于需要精确设定过期时间的应用,redis可以对数据设置精确的过期时间,这是MySQL做不到的
4、适用于计数器的应用
5、适用于Uniq操作,获取某段时间所有数据排重值
6、适用于实时系统,反垃圾系统
7、适用于Pub/sub构建实时消息系统(也就是发布与订阅。这是redis独有的系统)
8、适用于构建队列系统:list
9、用redis做缓存
redis和MySQL、mongodb的相同和不同点:
1、三者都有“库”的改建
2、MySQL有“表”的概念,redis没有,MongoDB里面是“集合”
3、MySQL有“字段”、“行和列”的概念,但是redis和MongoDB没有
redis | MySQL | MongoDB | |
---|---|---|---|
“库”的概念 | 库 | 库 | 库 |
“表”的概念 | 无 | 表 | collections |
”字段/行和列“ | 无 | 字段/行/列 | 无 |
Redis的常见配置:
daemonize 如果需要在后台运行,把该项改成yes
pidfile 配置多个pid的地址,默认是在/var/run/redis.pid
bind 绑定IP,设置后只接受来自该IP的请求
port 监听端口,默认是6379
timeout 设置客户端连接时的超时时间,单位为秒
loglevel 分为4级,debug、verbose、notice、warning
logfile 配饰log文件地址
database 设置数据库的个数,默认使用的数据库为0
save 设置redis进行数据库镜像的频率,备份数据
rdbcompression 在进行镜像备份时,是否进行压缩
Dbfilename 镜像备份文件的文件名
Dir 数据库镜像备份的文件放置路径
Slaveof 设置数据库为其他数据库的从数据库
Masterauth 主数据库连接需要的密码验证
Requirepass 设置登录时需要使用的密码
Maxclients 限制同时连接的客户数量
Maxmemory 设置redis能够使用的最大内存
Appendonly 开启append only 模式
Appensfsync 设置对appendonly.aof文件同步的频率
vm-enabled 是否开启虚拟内存支持
vm-swap-file 设置虚拟内存的交换文件路径
vm-max-memory 设置redis使用的最大物理内存大小
vm-page-size 设置虚拟内存的页大小
vm-pages 设置交换文件的总的page数量
vm-max-threads 设置VMIO同时使用的线程数量
Glueoutputbuf 把小的输出缓存存放在一起
Activerehashing 重新hash
hash-max-zipmap-entries 设置hash的临界值
原文地址:http://blog.51cto.com/10950710/2161921