认识redis:redis计数器与数量控制

本文详细介绍了Redis,从其定义、工作模式到数据类型和事务处理,重点探讨了Redis在计数器、锁、事件队列和抽奖限额等实际应用场景,并通过代码示例展示了如何有效利用Redis进行流量控制。通过对Redis特性的解析,帮助读者深化对Redis的理解。
摘要由CSDN通过智能技术生成

这篇文章是我个人对redis的一些理解,可以帮助大家系统的认识redis。本文的目标读者是使用过redis,但对redis了解不深的朋友。文章内容以redis为主,也会少量提到memcached。文章从redis的设计目的、工作模式、应用场景等方面阐述,最后会讲解一些具体的应用场景,还会夹带一些代码作为“干货”。

鉴于本人水平有限,文中如有不准确的内容,敬请斧正。

redis是什么

redis是一种内存型的数据存储器,使用场景

  • 数据库
  • 缓存
  • 消息代理(message broker)

同memcached对比
memcached是分布式的内存对象缓存系统,设计意图为通过缓解数据库压力来加快web应用的响应速度。

上面的描述分别被放在了redis和memcached的官网首页最显眼的位置,这也回答了redis和memcached的本质区别。

redis的工作模式

redis的工作模式为单进程,这意味着redis只能利用到一个cpu内核。
redis对请求的处理是串行的,对于同时涌进来的多个请求,redis首先把请求存入队列,按请求到达的先后顺序串行处理。

了解单进程和串行这两个特点,有助于我们使用redis时“扬长避短”。

之前有同事提到过,为何redis不适合存储大块的数据?从redis的工作模式我们可以窥知一二:大块的数据意味着需要较长的io时间,包括内存io和网络的io,cpu资源在io过程中是一直被占用的,这会阻塞其它请求,从而影响redis的整体性能。

数据类型

大家对redis的数据类型已经比较熟悉了,主要有以下5种。

  • string
  • list
  • hash
  • set
  • sorted set

各种数据类型的常用操作

string

  • set,get,setnx,setex,psetex
  • 拼接
  • 增加、减少(整数型字符串)
  • 位操作

list

  • 入列,出列(这两个命令都有阻塞模式)
  • 按排位获取部分元素

hash

  • 设置某个索引
  • 获取某个索引
  • 增加/减少某个索引的值(整数型字符串)
  • 获取所有索引的值

set

集合是一个数学概念,啰嗦提一下:集合中的元素都是唯一的

  • 加入元素
  • 删除元素
  • 检查元素是否在集合
  • 获取集合中的元素数量
  • 取差集/并集/交集
  • 元素转移(从集合a移至集合b)

zset

有序集合,每个元素都有一个分值,用于对元素进行排序

  • 取交集/并集
  • 获取一个元素的rank
  • 获取分值在某个范围内的元素数量
  • 获取分值在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值