基础数据结构
-
字符串(string)
- 字符串、整数、浮点数
- 对整个字符串或者字符串的其中一部分执行操作,对整数和浮点数执行自增或自减操作
-
哈希列表(hash)
- 包含键值对的无序散列表
- 添加、获取、移除单个键值对,获取所有键值对,检查某个键是否存在
-
列表(list)
- 链表
- 从两端压入或者弹出元素,读取单个或者多个元素进行修剪,只保留一个范围内的元素
-
集合(set)
- 无序集合
- 添加、获取、移除单个元素,检查一个元素是否存在与集合中,计算交集、并集、差集,从集合里面随机获取元素
-
有序集合(sort set)
-
有序集合
-
添加、获取、删除元素,根据分值范围或者成员来获取元素,计算一个键的排名
复杂的数据结构
-
位图(bitmaps)
- Bitmap 在 Redis 中不是一种实际的数据类型,而是一种将 String 作为 Bitmap 使用的方法。可以理解为将 String 转换为 bit 数组。使用 Bitmap 来存储 true/false 类型的简单数据极为节省空间。
-
算法数据结构(hyperloglogs)
- HyperLogLogs 是一种主要用于数量统计的数据结构,它和 Set 类似,维护一个不可重复的 String 集合,但是 HyperLogLogs 并不维护具体的 member 内容,只维护 member 的个数。也就是说,HyperLogLogs 只能用于计算一个集合中不重复的元素数量,所以它比 Set 要节省很多内存空间
-
地理空间(geo)
- 地理空间索引半径查询
-
布隆过滤(bloomfilter)
非分布式场景下Redis应用的备份与容灾
-
方案一
- 一个Master节点,两个Slave节点。客户端写数据的时候是写Master节点,读的时候,是读取两个Slave,这样实现读的扩展,减轻了Master节点读负载。
-
方案二
- Master和Slave1使用keepalived进行VIP转移。Client连接Master的时候是通过VIP进行连接的。避免了方案一IP更改的情况。
-
Redis Sentinel架构
- Sentinel集群对自身和Redis主从复制进行监控。当发现Master节点出现故障时,会经过如下步骤:
- Sentinel之间进行选举,选举出一个leader,由选举出的leader进行failover
- Sentinel leader选取slave节点中的一个slave作为新的Master节点。
客户端工具
性能测试工具
-
使用默认参数测试
redis-benchmark
-
自定义参数测试
redis-benchmark -n 1000000 --csv
-
雪球 rdr:
https://github.com/xueqiu/rdr
-
redis-rdb-tools:
https://github.com/sripathikrishnan/redis-rdb-tools
工具命令
检查修复本地数据文件工具
redis-check-dump dump.rdb
检查修复AOF日志文件工具
redis-check-aof appendonly.aof
基础命令
-
keys
- 列出Redis所有的key
-
del
- 删除一个或多个key,多个key之间用空格分隔,其返回值为整数,表示成功删除了多少个存在的key,因此,如果只删除一个key,则可以从返回值中判断是否成功,如果删除多个key,则只能得到删除成功的数量
-
exists
- exists命令用于判断一个或多个key是否存在,判断多个key时,key之间用空格分隔,exists的返回值为整数,表示当前判断有多少个key是存在的。
-
expire/pexpire
- expire设置key在多少秒之后过期,pexpire设置key在多少毫秒之后过期,成功返回1,失败返回0。
-
ttl/pttl
-
ttl和pttl命令用于获取key的过期时间,其返回值为整型
-
当key不存在或过期时间,返回-2。
-
-
当key存在且永久有效时,返回-1。
-
当key有设置过期时间时,返回为剩下的秒数(pttl为毫秒数)
-
expireat/pexpireat
- 设置key在某个时间戳过期,expreat参数时间戳用秒表示,而pexpireat则用毫秒表示,与expire和pexpire功能类似,返回1表示成功,0表示失败。
-
persist
- 移除key的过期时间,将key设置为永久有效,当key设置了过期时间,使用persist命令移除后返回1,如果key不存在或本身就是永久有效的,则返回0
-
type
- 判断key是什么类型的数据结构,返回值为string,list,set,hash,zset,分别表示我们前面介绍的Redis的5种基础数据结构。
geo,hyperloglog,bitmaps等复杂的数据结构,都是在这五种基础数据结构上实现,比如geo是zset类型,hyperloglog和bitmaps都为string。
-
auth
- Redis认证命令,执行其他命令前,必须先进行认证
-
ping
- 测试客户端和服务器之间的联通,返回值为PONG,表示联通
-
config get *
- 获取所有配置参数
-
config set config_name config_value
- 设置配置参数值
-
info
- 返回服务器信息
-
select
- 切换数据库,redis默认的数据库是0-15,共16个数据库
-
move
- 将当前库的键移动到其他数据库
-
dbsiz