NoSQL 数据库之Redis简介 (一)

注:此文原载于本人网易博客,并加上工作日常总结完善,统一汇总于CSDN博客发布

【redis 开门见山】

redis是一个基于BSD协议开源的Key-Value型NoSQL数据库。它用C语言编写的、支持网络交互的、可基于内存也可持久化。它通常用来存储结构化的数据,因为redis的key可以包含String、hash、listset和sorted list。

【redis 接口支持】

redisclient支持多种语言,包括:c、C++、C#、php、java、python、go等语言,根据自己的开发语言,选择合适的redis client版本类型即可(后面章节将详细介绍)

【redis 应用场景】

参考:https://www.cnblogs.com/NiceCui/p/7794659.html

1、热点数据:经常会被查询,但是不经常被修改或者删除的数据。(缓存机制)

2、计数器:诸如统计点击数等应用,使用单线程,可以避免并发问题,保证不会出错,可达到毫秒级性能。

3、队列:相当于消息系统,队列不仅可以把并发请求变成串行,并且还可以做队列或者栈使用。

注:如果对于数据一致性要求高的话还是用ActiveMQ/RocketMQ等专业系统

4、位操作:大数据处理,用到的命令是:setbit、getbit、bitcount

原理是:redis内构建一个足够长的数组,每个数组元素只能是0和1两个值,然后这个数组的下标index用来表示我们上面例子里面的用户id(必须是数字哈),那么很显然,这个几亿长的大数组就能通过下标和元素值(0和1)来构建一个记忆系统,上面我说的几个场景也就能够实现。

5、分布式锁与单线程机制

  • 验证前端的重复请求(可以自由扩展类似情况),可以通过redis进行过滤:每次请求将request Ip、参数、接口等hash作为key存储redis(幂等性请求),设置多长时间有效期,然后下次请求过来的时候先在redis中检索有没有这个key,进而验证是不是一定时间内过来的重复提交

  • 秒杀系统,基于redis是单线程特征,防止出现数据库“爆破”

  • 全局增量ID生成,类似“秒杀”

6、最新列表

例如新闻列表页面最新的新闻列表,如果总数量很大的情况下,尽量不要使用select a from A limit 10这种low货,尝试redis的 LPUSH命令构建List,一个个顺序都塞进去就可以啦。不过万一内存清掉了咋办?也简单,查询不到存储key的话,用mysql查询并且初始化一个List到redis中就好了。

7、排行榜

谁得分高谁排名往上。命令:ZADD(有续集,sorted set)



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值