非关系型数据库Redis知识总结

NoSQL ,(Not Only SQL),泛指非关系型数据库。 

NoSQL 通常是以key-value形式存储, 不支持SQL语句, 没有表结构

优点:

高并发读写的性能 大数据量的扩展(分布式存储) 配置简单  灵活、高效的操作与数据模型 低廉的成本 

不足之处: 

没有统一的标准 没有正式的官方支持 各种产品还不算成熟

1、redis介绍:

(1)RedisRemote 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比较说明

redismemcache比较

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;  

}

//跳转到下单页面,完成下单操作



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值