一:组成
KV
cache
persitent
3V+3高背景
海量volume
多样variety
实时velocity
高性能
高并发
高可拓
二:例子
1商品的基本信息:名称不会变,衣服永远是衣服
存在关系型数据库中:mysql/oracle,去IOE(IBM小型机,Oracle,EMC存储设备)
2商品的描述,详情,评价信息
存在文档型的数据库:MongDB
3商品的图片:
存在于分布式的文件系统:淘宝自己的TFS,谷歌的GFS,Hadoop的HDFS
4商品的关键字
站内搜索ISearch,淘宝内用
5商品的波段性的热点高频信息
Redis,Tair,Memcache
6商品的交易,价格计算,积分
支付宝
三:BOSN:二进制json
四:noql:聚合模型(KV键值对,Bson,列族,图形)
1)KV键值
2)文档型数据库(MongoDB)
3)列存储数据库(Cassandra,HBase)
4)图数据库(Neo4J,InfoGrid)
五:CAP:
1)c:consistency(强一致性)
2)A:Availability(可用性)
3)P:partition tolerance(分区容错性)
CAP核心理论:一个分布式系统不可能同时满足一致性,可用性和分区容错性,最多只能满足两个
CA:单点集群,满足一致性,可用性的系统,拓展性不强(oracle)
CP:满足一致性,分区容忍,但性能不高(redis)
AP:——-满足可用性,分区容忍性,对一致性要求低
BASE:解决方案BASE
基本可用(Basically Available)
软状态(Soft state)
最终一致性(Eventually consistent)
六:分布式:不同的多台服务器上面部署不同的服务模型
集群:不同的多台服务器上部署相同的服务模块
七:redis Remote Dictionary Server(远程字典服务器)
特点:1)支持数据持久化
2)支持key_value,set,list,Hash
3)支持数据的备份
八:redis知识
1)单进程:通过epoll函数
2)默认16个数据库
3)常用命令:
a:select select 0 选择1号库
b:dbsize 数据库中key的个数 keys * 语句查看所有的key
c:flushdb 删除所在数据库的数据
flushall 删除16个数据库的所有的数据
d:默认端口6379
4)常用的数据类型命令操作
String:
Hash:类似Map
lpush mylist 1 2 3
左查看 `lrange mylist 0 5` //查看6个元素
左弹出 `lpop mylist`
右添加 `rpush mylist2 a b c`
rpush mylist2 1 2 3
右查看 `rrange mylist2 0 5` //查看6个元素
右弹出 `rpop mylist2`
查看列表:
两端弹出:
之前,之后插入:linsert mylist4 before b 222
linsert mylist4 after b 222
rpoplpush:消息队列
lpush mylist5 1 2 3
lpush mylist6 a b c
rpoplpush mylist5 mylist6
lrange mylist6 0 -1 结果:1 c b a
set:set是String类型的无序集合,通过HashTable实现
不允许出现重复的元素
添加元素:sadd myset a b c
删除元素:srem myset 1 2
查看元素:SMEMBERS myset
判断元素是否存在,1存在:SISMEMBER myset a
差运算:SDIFF mya1 myb1 //mya1中有,myb1中没有
交运算:SINTER mya1 myb1
并运算:SUNION mya1 myb1
统计数量:scard myset
差运算存储到新的key:sdiffstore myc1 mya1 myb1
交运算存储到新的key:同理
并运算存储到新的key:同理
使用的场景:访问ip地址的存储
维护数据的关联关系
Zset:(sorted set :有序集合)zest和set一样也是String类型的集合,且不允许重复
不同的是每个元素都会关联一个double类型的分数
redis通过分数来为集合中的成员进行从小到大的排序,zset在成员中是唯一的,但(scored)是可以重复的。
添加: zadd mysort 70 zs 80 li 90 ww
查看元素:`zrange mysort 0 -1`
zrange mysort 0 -1 withscores
九redis事务
multi:开启事务
exec:提交事务
取消事务:discard
十:持久化:数据存储在内存中写入硬盘过程
RDB持久化:优势 只包含一个文件
劣势 低可用
AOF持久化:优势 安全,日志文件相对完整
劣势
无持久化:
同时RDB和AOF:
常用的命令:http://redisdoc.com/
执行: ./redis-server /home/zzq/myRedis/redis.conf
./redis-cli -p 6379