NoSQL ,(Not Only SQL),泛指非关系型数据库。
NoSQL 通常是以key-value形式存储, 不支持SQL语句, 没有表结构
优点:
高并发读写的性能 大数据量的扩展(分布式存储) 配置简单 灵活、高效的操作与数据模型 低廉的成本
不足之处:
没有统一的标准 没有正式的官方支持 各种产品还不算成熟
1、redis介绍:
(1)Redis是Remote Dictionary Server(远程数据服务)的缩写.
由意大利人antirez(Salvatore Sanfilippo)开发的一款内存高速缓存数据库
(2)该软件使用C语言编写,它的数据模型为key-value
(3)它支持存储的value类型很多,包括string(字符串)、hash(哈希)、list(链表)、set(集合)、Zset(有序集合)。
(4)为了保证效率数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
2、特点
1)高速读取数据(in-memory)
2)减轻数据库负担
3)有集合计算功能(优于普通数据库和同类别产品)
4)多种数据结构支持
3、适合场合及其优势
1)[Sort Set]排行榜应用,取top n操作,例如sina微博热门话题
2)[List]获得最新N个数据 或 某个分类的最新数据
3)计数器应用
4)[Set]sns(social network site)获得共同好友
5)[Set]防攻击系统(ip判断)等等
4、与memcache比较说明
redis与memcache比较
(1)数据类型:memcache支持的数据类型就是字符串,redis支持的数据类型有字符串,哈希,链表,集合,有序集合。
(2)持久化:memcache数据是存储到内存里面,一旦断电,或重启,则数据丢失。redis数据也是存储到内存里面的,但是可以持久化,周期性的把数据给保存到硬盘里面,导致重启,或断电不会丢失数据。
(3)数据量:memcahce一个键存储的数据最大是1M,而redis的一个键值,存储的最大数据量是1G的数据量。
5.redis实现秒杀功能
实现原理:使用redis链表中队列,进行pop操作,因为pop操作是原子的,即使有很多用户同时到达,也是依次执行,推荐使用。
第一步:先将商品库存如队列
<?php
$store=1000;
$redis=new Redis();
$result=$redis->connect('127.0.0.1',6379);
$goods_number = 100;
for($i=0;$i<$goods_number;$i++){
$redis->lpush('goods_store',1);
}
echo $redis->llen('goods_store');
?>
第二步:抢购开始,设置库存的缓存周期
$redis->setTimeout(‘goods_store’,60);
第三步:客户端执行下单操作,下单前判断redis队列库存量
$redis=new Redis();
$redis->connect('127.0.0.1',6379);
$count=$redis->lpop('goods_store');
if(!$count){
echo ‘抢购失败’;
return;
}
//跳转到下单页面,完成下单操作