redis
NoSql
NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性(事务)。
关系型数据库:关系就是表(行列表),Mysql, Oracle, SQLServer
非关系型: 没有行列关系,key-value, 文档, 图… Redis,MongoDB, Hive,HBase…
edis和memcached的系统点和不同点?
相同点:都是key-valueNosql,数据存储在内容中,读写效率高,都支持存储过期.
不同点:
1)redis支持持久化
2)redis支持存储类型更多
redis使用场景
- 作为缓存
- 队列
redis的安装
下载解压1. 启动redis服务(带配置文件启动)
2. 对list集合的操作
list集合可以看成是一个左右排列的队列(列表)
lpush key value //将一个或多个值 value 插入到列表 key 的表头(最左边)
rpush key value //将一个或多个值 value 插入到列表 key 的表尾(最右边)
从左边 lpush(添加) lpop(删除)
从右边 rpush rpop
实现队列
堆(FIFO)先进先出 ,添加和删除通过不同的方向
栈 (FILO) 先进后出 ,(后进先出) 添加和删除从相同的方向
淘汰机制
两种方式:
LRU: 最近最少使用
TTL: 临近过期
noeviction: 默认策略,不淘汰,如果内存已满,添加数据是报错
持久化
redis是怎么保存数据?
redis为了考虑效率,保存数据在内容中.并且考虑数据安全性,还做数据持久化,如果满足保存策略,就会把内存的数据保存到数据rdb文件,还来不及保存那部分数据存放到aof更新日志中。在加载时,把两个数据做一个并集。
RDB:快照 一定时间的一定操作进行储存 可能数据丢失
AOF:数据改变操作进行储存 效率低