Redis
文章平均质量分 60
Lebron_Chen
这个作者很懒,什么都没留下…
展开
-
深入Redis的RDB和AOF两种持久化方式以及AOF重写机制的分析
缓存服务器有一个很重要的指标就是能否持久化,如果缓存服务器不支持持久化的话,一些相对重要的数据都不能存在缓存服务器中了,毕竟谁也不能保证服务百分百可用,一旦缓存服务器宕机,所有数据就都丢失了。今天来分享一下Redis的持久化两种持久化方式RDB和AOF。1、RDBRDB(redis database),可以理解为快照/内存快照,RDB持久化过程是将当前进程中的数据生成快照存储到硬盘...原创 2018-08-09 22:14:05 · 6010 阅读 · 1 评论 -
Redis 的内存分配
我们都知道Redis是基于内存的一个数据库,那么Redis是怎么管理内存的呢?今天这篇文章主要分享一下Redis的内存分配和简单的查看Redis内存使用情况。内存分配Redis进程的内存消耗主要包括:自身内存 + 对象内存 + 缓冲内存 + 内存碎片。1 自身内存Redis自身内存消耗非常少,通常used_memory在800KB左右,used_memory_rss在3M左...原创 2018-09-10 22:55:23 · 6795 阅读 · 1 评论 -
Redis GEO的使用
Redis 3.2提供了GEO功能,支持存储地理位置信息用来实现类似微信中附近的人的功能,使用起来十分方便。下面简单介绍一下Redis中几个和GEO相关的命令1.添加地理位置geoadd key long lat member [longitude latitude member] 城市 经度 纬度 成员 上海 121.47 31.23...原创 2018-09-07 11:12:37 · 2678 阅读 · 0 评论 -
Redis HyperLogLog 用于记录独立总数
HyperLogLog是Redis支持的一种数据结构,使用基数算法来完成独立总数的统计。这里先来介绍一下基数算法。基数是指一个集合中,不同的数的个数。基数算法是估计一个集合中不同的数的个数,不是数据总量的估计,也不是基数的精确计算。而是用概率算法的思想,来用低空间和时间成本,以一个很低的误差度来估计数据的基数。所以HyperLogLog采用了牺牲精度节约内存的思想,能够使用极小的内存空间来...原创 2018-09-06 09:57:53 · 885 阅读 · 0 评论 -
Redis Bitmaps的使用
Bitmaps是Redis支持的一种数据结构,value是一个长字符串,字符串上每一个字符的值只能是 0 或 1。看起来像是一个二进制的数据结构,其实只是一个字符串,所以严格来说Bitmaps并不是一个新的数据结构,而是一个符合特殊约定的字符串。下面先来看一下Redis中和Bitmaps相关的几个命令:1.常见命令设置值bitset key offset value...原创 2018-09-06 09:56:51 · 1029 阅读 · 0 评论 -
Redis的事务机制
昨天介绍了Redis Pipeline,Pipeline能帮我们组装命令一次发送给Redis,但是Pipeline中的命令不具有原子性,所以如果我们需要自己组装一个原子性的操作,使用Pipeline是无法实现的,庆幸的是Redis提供了事物和支持Lua脚本来实现原子性操作。今天我们来了解一下Redis事物。很多关系型数据库都支持事物操作,保证在一个事物内的操作是原子性的,要么都执行,要么都...原创 2018-09-03 10:25:32 · 6268 阅读 · 2 评论 -
Redis Pipeline 批处理任务
今天分享一个Redis的小功能,Pipeline(流水线)。Pipeline能够将一组Redis命令组装起来,通过一次请求发给Redis服务端,Redis服务端执行完这些命令之后再将这些命令的结果一次性返回给客户端。Redis执行一条命令分为四个步骤:发送命令命令排队命令执行返回结果其中发送命令和返回结果两步的时间和称之为Rount Trip Time(RTT,往返时间)。假...原创 2018-09-02 01:22:26 · 1089 阅读 · 0 评论 -
Redis六种基本数据结构的操作
一、Stringvalue是字符串类型。1.常用命令set key value:设置key、valuesetex key seconds value:设置key、value,有效期seconds秒setnx key value:设置key、value,如果key存在则setnx失败,返回 0 (set key value nx等价)set key value xx:设置ke...原创 2018-08-30 00:39:44 · 1480 阅读 · 0 评论 -
Redis Lua脚本的使用,自定义命令解决分布式锁的抢占
一、Lua 的介绍Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入到应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua 的特性 - 轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。 - 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua...原创 2018-09-04 13:31:37 · 1807 阅读 · 0 评论 -
为什么说Redis单线程效率高
Redis效率高的主要原因有下面几个:基于内存操作,速度非常快采用单线程,避免了上下文的切换导致消耗CPU采用单线程,不用去考虑各种加锁释放锁的问题使用IO多路复用模型,非阻塞IORedis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。这个数据不比采用单进程多线程的同样基于内存的 K...原创 2018-08-29 10:46:27 · 4201 阅读 · 0 评论 -
Redis的多个db机制和渐进式遍历scan命令
今天主要讲两个东西,一个是Redis的多个db机制,另一个是渐进式遍历。首先来讲一下Redis的多个db机制Redis中有个默认配置databases 16这个配置表示Redis启动后将有16个数据库,select 0 操作将切换到第一个数据库,select 15 将切换到最后一个数据库。每个数据库的数据之间没有任何关联,key都独立存在。多个数据库起到了一个隔离key...原创 2018-08-30 23:45:40 · 2432 阅读 · 0 评论 -
Redis的内存上限和内存回收策略
上一篇文章讲到了Redis的内存分配和简单的Redis内存查看,今天这篇文章带来Redis的内存上限管理和Redis的内存回收策略。内存上限Redis可以通过 maxmemory 参数来限制最大可用内存,主要为了避免Redis内存超过操作系统内存,从而导致服务器响应变慢甚至死机的情况。maxmemory 参数限制的是Redis的对象内存大小,也就是 used_memory 对应的内...原创 2018-09-10 22:56:10 · 7227 阅读 · 3 评论