Redis——Redis进阶命令集详解(下)
本文详细介绍了Redis一些复杂命令的使用,包括Redis事务相关命令,如MULTI、EXEC、DISCARD 和 WATCH ,发布订阅操作命令,如PUBLISH 、SUBSCRIBE 、PSUBSCRIBE ,BitMap操作命令,如SETBIT、GETBIT、BITCOUNT、BITOP,HyperLogLog 操作命令PFADD、PFCOUNT、PFMERGE,GEO命令如GEOADD、GEODIST、GEORADIUS,以及性能测试命令redis-benchmark等等
本文目录
- 
- 
- 一、Redis 事务
 - 二、发布订阅操作命令
 - 三、BitMap 操作命令
 - 四、HyperLogLog 操作命令
 - 五、Geo操作命令
 - 六、benchmark 性能测试
 
 
 - 
 
一、Redis 事务
Redis 事务通过 MULTI、EXEC、DISCARD 和 WATCH 命令实现。事务可以将多个命令打包,按顺序执行,并且在执行过程中不会被其他客户端的命令打断。
MULTI :开启一个事务。
 EXEC :执行事务中的所有命令
 DISCARD: 取消事务。
 WATCH :用于监视一个或多个键,若在事务执行前这些键被其他客户端修改,则事务会被取消。
MULTISET name rGET nameEXEC
以上命令将 SET 和 GET 命令打包成一个事务执行。
二、发布订阅操作命令
Redis 的发布-订阅功能允许客户端订阅一个或多个频道,当有其他客户端向这些频道发布消息时,订阅者会收到相应的消息。
PUBLISH  :向指定的频道 channel 发布一条消息 message。
 SUBSCRIBE  [channel ...]:订阅一个或多个频道。
 PSUBSCRIBE  [pattern ...]:订阅符合指定模式的频道。
三、BitMap 操作命令
- 
设置与获取位值
SETBIT:将键key对应的 BitMap 中偏移量为offset的位设置为value(0 或 1)。GETBIT:获取键key对应的 BitMap 中偏移量为offset的位的值。
 - 
位统计与操作
BITCOUNT [start end]:统计键key对应的 BitMap 中值为 1 的位的数量,可指定统计的字节范围。BITOP [key2 ...]:对多个 BitMap 进行位运算(如 AND、OR、XOR、NOT),结果存储在destkey中。
 - 
BitMap 应用场景
BitMap 是一种以位为单位进行存储的数据结构,每个位只能存储 0 或 1。在 Redis 中,BitMap 可以使用字符串类型来实现。 
应用场景
 - 用户签到:可以使用一个 BitMap 来记录用户的签到情况,每个位对应一天,签到则将该位置为 1,未签到则为 0。
 - 在线用户统计:通过 BitMap 记录每个用户的在线状态,统计在线用户数量。
四、HyperLogLog 操作命令
HyperLogLog 是一种用于估算集合中唯一元素数量的概率性数据结构,它在占用极小内存的情况下可以对大量数据的基数进行近似统计。
- 命令
PFADD [element ...]:向 HyperLogLog 中添加一个或多个元素。PFCOUNT [key ...]:估算 HyperLogLog 中唯一元素的数量,可同时对多个 HyperLogLog 进行统计。PFMERGE [sourcekey2 ...]:将多个 HyperLogLog 合并为一个,结果存储在destkey中。
 
五、Geo操作命令
Redis 的 Geospatial 功能用于存储和处理地理空间数据,如地理位置的经纬度信息。基于有序集合(ZSet)实现,通过将经纬度转换为一个分数进行存储。
- 命令
GEOADD [longitude latitude member ...]:向键key对应的地理空间集合中添加一个或多个地理位置信息。GEODIST [unit]:计算键key对应的地理空间集合中两个成员之间的距离,可指定单位(如 m、km、mi、ft)。GEORADIUS [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]:查询键key对应的地理空间集合中距离指定经纬度radius范围内的成员,可选择返回成员的经纬度、距离等信息。
 
六、benchmark 性能测试
Redis 自带 redis - benchmark 工具,可用于对 Redis 进行性能测试。能模拟多个客户端同时向 Redis 服务器发送请求,测试 Redis 在不同场景下的性能指标,如 QPS(每秒查询率)、响应时间等。也可通过指定不同的参数,如客户端数量、请求数量、请求类型等,来模拟不同的业务场景,评估 Redis 在高并发情况下的性能表现。
- 命令
 
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000
此命令表示使用 100 个客户端同时向 127.0.0.1:6379 的 Redis 服务器发送 100000 个请求进行性能测试。


