NoSQL简介及Redis使用教程
nosql(nosql = not only sql ),意即"不仅仅是sql"。
nosql用于超大规模数据的存储。(例如谷歌或facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
关系型遵循acid规则
1、a (atomicity) 原子性2、c (consistency) 一致性
3、i (isolation) 独立性
4、d (durability) 持久性
为什么使用nosql ?
今天我们可以通过第三方平台(如:google,facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那sql数据库已经不适合这些应用了, nosql数据库的发展也却能很好的处理这些大的数据。
rdbms vs nosql
rdbms (关系数据库管理)
- 高度组织化结构化数据
- 结构化查询语言(sql) (sql)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
nosql
- 代表着不仅仅是sql
- 没有声明性查询语言
- 没有预定义的模式
-键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非acid属性
- 非结构化和不可预知的数据
- cap定理
- 高性能,高可用性和可伸缩性
nosql的优点/缺点
优点:
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
缺点:
- 没有标准化
- 有限的查询功能(到目前为止)
- 最终一致是不直观的程序
nosql 数据库分类
类型 | 部分代表 | 特点 |
列存储 |
hbase cassandra hypertable |
顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的io优势。 |
文档存储 |
mongodb couchdb |
文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 |
key-value存储 |
tokyo cabinet / tyrant berkeley db memcachedb redis |
可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(redis包含了其他功能) |
图存储 |
neo4j flockdb |
图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 |
对象存储 |
db4o versant |
通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 |
xml数据库 |
berkeley db xml basex |
高效的存储xml数据,并支持xml的内部查询语法,比如xquery,xpath。 |
redis 教程
原教程网址https://www.runoob.com/redis/redis-tutorial.html
remote dictionary server(redis) 是一个由salvatore sanfilippo写的key-value存储系统。
redis是一个开源的使用ansi c语言编写、遵守bsd协议、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(string), 哈希(map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
$redis-cli redis 127.0.0.1:6379> redis 127.0.0.1:6379> ping
以上实例中我们连接到本地的 redis 服务并执行 ping 命令,该命令用于检测 redis 服务是否启动。
redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
127.0.0.1:6379> hmset runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000 ok 127.0.0.1:6379> hgetall runoobkey 1) "name" 2) "redis tutorial" 3) "description" 4) "redis basic commands for caching" 5) "likes" 6) "20" 7) "visitors" 8) "23000"
以上实例中,我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 runoobkey 中。
redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
redis 客户端可以订阅任意数量的频道。
下表列出了 redis 连接的基本命令:
序号 | 命令及描述 |
---|---|
1 | auth password 验证密码是否正确 |
2 | echo message 打印字符串 |
3 | ping 查看服务是否运行 |
4 | quit 关闭当前连接 |
5 | select index 切换到指定的数据库 |
下一篇: 刘裕举兵北伐势如破竹,却偏偏长安得而复失
推荐阅读
-
redis在windows下安装和PHP中使用,redisphp_PHP教程
-
【Redis笔记】第5篇:redis监控工具-redissentinel使用说明及注意
-
Bixelangelo如何免费使用 矢量绘图软件Bixelangelo安装及激活图文教程
-
PHP添加Redis模块及连接,phpredis模块_PHP教程
-
PHP扩展开发-数组的使用以及HashTable简介_PHP教程
-
SVN入门及配置使用_PHP教程
-
redis的安装及php的redis使用
-
NoSQL数据库Redis使用命令简介
-
PHP 中$_FILES的使用及注意事项_PHP教程
-
Redis在springboot中的使用教程