NOSQL(not Only SQL )是不仅仅是sql,而不是指非sql
NOSQL的特性:
1、Hight-Performance-高并发读写
2、Huge Storge -海量数据存储访问
3、High Scalability && High Avalilability 高可拓展和高可用性
NO-SQL的四大分类
1、键值存储(Redis)
2、列表存储
3、文档数据库(Mongodb)
4、图形数据库
Redis应用场景
1、缓存,数据查询,新闻,商品类型等
2、聊天室的在线好友列表
3、任务队列:秒存,抢购
4、网站访问统计 :数据处理过程使用毫秒,应用排行榜
5、分布式集群中的session分离
NO-SQL的特点
1、以扩展 2、大数据量,高性能 3、灵活的数据模型 4、高可用性
Redis的数据结构
1、字符串(String)
String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshdr 当做字符串)。使用 Strings 类型,可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受 Redis 的定时持久化(可以选择 RDB 模式或者 AOF 模式),操作日志及 Replication 等功能。除了提供与 Memcached 一样的 get、set、incr、decr 等操作外.
2、哈希(Hash)
我们经常将一些结构化的信息打包成 hashmap,在客户端序列化后存储为一个字符串的值(一般是 JSON 格式),比如用户的昵称、年龄、性别、积分等。这时候在需要修改其中某一项时,通常需要将字符串(JSON)取出来,然后进行反序列化,修改某一项的值,再序列化成字符串(JSON)存储回去。简单修改一个属性就干这么多事情,消耗必定是很大的,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而 Redis 的 Hash 结构可以使你像在数据库中 Update 一个属性一样只修改某一项属性值。
3、字符串列表(List)
使用 List 结构,我们可以轻松地实现最新消息排行等功能 。List 的另一个应用就是消息队列,可以利用 List 的 *PUSH 操作,将任务存在 List 中,然后工作线程再用 POP 操作将任务取出进行执行。Redis 还提供了操作 List 中某一段元素的 API,你可以直接查询,删除 List 中某一段的元素。
4、字符串集合(Set)
Set 就是一个集合,集合的概念就是一堆不重复值的组合。利用 Redis 提供的 Set 数据结构,可以存储一些集合性的数据。比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。因为 Redis 非常人性化的为集合提供了求交集、并集、差集等操作,那么就可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。
5、有序字符串集合
和Sets相比,Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列,比如一个存储全班同学成绩的 Sorted Sets,其集合 value 可以是同学的学号,而 score 就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。另外还可以用 Sorted Sets 来做带权重的队列,比如普通消息的 score 为1,重要消息的 score 为2,然后工作线程可以选择按 score 的倒序来获取工作任务。让重要的任务优先执行。
Redis 的事务
multi 是开启事务相当于MySQL中的begin transaction
exec 是提交事务 相当于MySQL中的commit
discard 回滚相当于MySQL中的rollback
Redis 的持久化
redis主要有两种持久化 RDB和AOF
RDB 持久化 是按时间间隔存储在磁盘上
它支持两种快照模式:
定时快照,即按一定时间将内存中的数据保存到磁盘上。
定量快照,即数据变化一定次数后将数据保存到磁盘上。
从save 命令来触发快照
AOF持久化
是以日志文件形式存储
他支持三种同步方式:秒同步,每修改同步和不同步
这里默认的是秒同步,日志文件形式存储是以追加形式存储的。
Redis是键值对存储的,key值一般小于1024KB,value 不超过512MB
以上就是我对redis 的简单理解。