作者:京东物流刘丽侠姚再毅康睿刘斌李振
一、Redis的特性1.1Redis为什么快?
基于内存操作,操作不需要跟磁盘交互,单次执行很快
命令执行是单线程,因为是基于内存操作,单次执行的时间快于线程切换时间,同时通信采用多路复用
Redis本身就是一个k-v结构,类似于hashMap,所以查询性能接近于O(1)
同时redis自己底层数据结构支持,比如跳表、SDS
lO多路复用,单个线程中通过记录跟踪每一个sock(I/O流)的状态来管理多个I/O流
1.2Redis其他特性
更丰富的数据类型,虽然都是k、v结构,value可以存储很多的数据类型
完善的内存管理机制、保证数据一致性:持久化机制、过期策略
支持多种编程语言
高可用,集群、保证高可用
1.Redis高可用
很完善的内存管理机制,过期、淘汰、持久化
集群模式,主从、哨兵、cluster集群
二、Redis数据类型以及使用场景Redis的数据类型有String、Hash、Set、List、Zset、bitMap(基于String类型)、Hyperloglog(基于String类型)、Geo(地理位置)、Streams流。
2.1String
2.1.1基本指令
//批量设置msetkey1value1key2value2//批量获取mgetkey1key2//获取长度strlenkey//字符串追加内容appendkeyxxx//获取指定区间的字符getrangekey05//整数值递增(递增指定的值)incrintkey(incrbyintkey10)//当key存在时将覆盖SETEXkeysecondsvalue//将key的值设为value,当且仅当key不存在。SETNXkeyvalue
2.1.2应用场景
缓存相关场景缓存、token(跟过期属性完美契合)
线程安全的计数场景(软限流、分布式ID等)
2.2Hash
2.2.1基本指令
//将哈希表key中的域field的值设为value。HSETkeyfieldvalue//返回哈希表key中给定域field的值。HGETkeyfield//返回哈希表key中的所有域。HKEYSkey//返回哈希表key中所有域的值。HVALSkey//为哈希表key中的域field的值加上增量increment。HINCRBYkeyfieldincrement//查看哈希表key中,给定域field是否存在。HEXISTSkeyfield
2.2.2应用场景
存储对象类的数据(