详解Redis基
副问题[/!--empirenews.page--]
本文将从Redis的根基特征入手,通过报告Redis的数据布局和首要呼吁对Redis的根基手段举办直观先容。之后概览Redis提供的高级手段,并在陈设、维护、机能调优等多个方面举办更深入的先容和指导。 本文得当行使Redis的平凡开拓职员,以及对Redis举办选型、架构计划和机能调优的架构计划职员。 目次
概述Redis是一个开源的,基于内存的布局化数据存储前言,可以作为数据库、缓存处事或动静处事行使。 Redis支持多种数据布局,包罗字符串、哈希表、链表、荟萃、有序荟萃、位图、Hyperloglogs等。 Redis具备LRU裁减、事宜实现、以及差异级此外硬盘耐久化等手段,而且支持副本集和通过Redis Sentinel实现的高可用方案,同时还支持通过Redis Cluster实现的数据自动分片手段。 Redis的首要成果都基于单线程模子实现,也就是说Redis行使一个线程来处事全部的客户端哀求,同时Redis回收了非阻塞式IO,并风雅地优化各类呼吁的算法时刻伟大度,这些信息意味着:
Redis的数据布局和相干常用呼吁本节中将先容Redis支持的首要数据布局,以及相干的常用Redis呼吁。本节只对Redis呼吁举办简要的先容,且只列出了较常用的呼吁。假如想要相识完备的Redis呼吁集,或相识某个呼吁的具体行使要领,请参考官方文档: https://redis.io/commands Key Redis回收Key-Value型的根基数据布局,任何二进制序列都可以作为Redis的Key行使(譬喻平凡的字符串或一张JPEG图片) 关于Key的一些留意事项:
String String是Redis的基本数据范例,Redis没有Int、Float、Boolean等数据范例的观念,全部的根基范例在Redis中都以String浮现。 与String相干的常用呼吁:
上文提到过,Redis的根基数据范例只有String,但Redis可以把String作为整型或浮点型数字来行使,首要表此刻INCR、DECR类的呼吁上:
也就是说,举办INCR/DECR系列呼吁的value,必需在[-2^63 ~ 2^63 – 1]范畴内。 前文提到过,Redis回收单线程模子,自然是线程安详的,这使得INCR/DECR呼吁可以很是便利的实现高并发场景下的准确节制。 例1:库存节制 在高并发场景下实现库存余量的精准校验,确保不呈现超卖的环境。 配置库存总量:
库存扣减+余量校验:
当DECR呼吁返回值大于便是0时,声名库存余量校验通过,假如返回小于0的值,则声名库存已耗尽。 假设同时有300个并发哀求举办库存扣减,Redis可以或许确保这300个哀求别离获得99到-200的返回值,每个哀求获得的返回值都是独一的,绝对不会找呈现两个哀求获得一样的返回值的环境。 例2:自增序列天生 实现相同于RDBMS的Sequence成果,天生一系列独一的序列号 配置序列起始值:
获取一个序列值:
直接将返回值作为序列行使即可。 获取一批(如100个)序列值:
假设返回值为N,那么[N – 99 ~ N]的数值都是可用的序列值。 当多个客户端同时向Redis申请自增序列时,Redis可以或许确保每个客户端获得的序列值或序列范畴都是全局独一的,绝对不会呈现差异客户端获得了一再的序列值的环境。 List (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |