redis常用命令 及使用场景
Redis是一个高性能的键值对存储系统,它支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合。下面介绍一些Redis常用命令及其使用说明。
- SET
SET命令用于设置键值对。语法如下:
SET key value [EX seconds] [PX milliseconds] [NX|XX]
其中,key是键名,value是键值。EX参数表示过期时间(秒),PX参数表示过期时间(毫秒),NX表示只有当键不存在时才设置,XX表示只有当键已存在时才设置。
- GET
GET命令用于获取键值对。语法如下:
GET key
其中,key是键名。
- DEL
DEL命令用于删除键值对。语法如下:
DEL key [key ...]
其中,key是键名,可以指定多个键名。
- INCR/DECR
INCR和DECR命令分别用于对键的值进行加1和减1操作。语法如下:
INCR key
DECR key
其中,key是键名。如果键不存在,则会将其值初始化为0。
- EXISTS
EXISTS命令用于检查指定的键是否存在。语法如下:
EXISTS key
其中,key是键名。如果键存在,则返回1,否则返回0。
- KEYS
KEYS命令用于列出所有符合指定模式的键名。语法如下:
KEYS pattern
其中,pattern是一个通配符,可以使用*表示任意多个字符,?表示任意一个字符。
- HSET/HGET
HSET和HGET命令分别用于设置和获取哈希表中的字段。语法如下:
HSET key field value
HGET key field
其中,key是哈希表的键名,field是字段名,value是字段值。
- LPUSH/RPUSH/LRANGE
LPUSH和RPUSH命令分别用于在列表的左侧和右侧插入元素。LRANGE命令用于获取列表中的元素。语法如下:
LPUSH key value [value ...]
RPUSH key value [value ...]
LRANGE key start stop
其中,key是列表的键名,value是要插入的元素,start和stop是起始和结束位置。
- SADD/SMEMBERS
SADD命令用于向集合中添加元素,SMEMBERS命令用于获取集合中的所有元素。语法如下:
SADD key member [member ...]
SMEMBERS key
其中,key是集合的键名,member是要添加的元素。
- ZADD/ZRANGE
ZADD命令用于向有序集合中添加元素,ZRANGE命令用于获取有序集合中的元素。语法如下:
ZADD key score member [score member ...]
ZRANGE key start stop [WITHSCORES]
其中,key是有序集合的键名,score是分数,member是元素,start和stop是起始和结束位置,WITHSCORES表示同时返回元素和分数。
以上是Redis常用命令的简要介绍,更多命令和详细说明可以参考Redis官方文档。
Redis 使用场景
点赞功能
关于点赞功能,通常都是有一部分热门比较点赞频繁,另外一部分可能频次非常少。合理利用 redis key 的过期时间是个比较好的办法。redis 的hash 数据类型 不能给里面的元素设置过期时间。所以这里应该直接使用 单个 key 而不是 hash 数据类型。
常见的做法,就是接口里只操作 redis key 的incr 更新点赞数量,同时新增一个 set 集合,把有点赞的文章id 放到这个set 里。这样点赞接口里只会操作redis 而不会操作数据库。极大减少对数据库的压力。如果接口里找不到对应的redis key,则需要读取数据库同步一下最新的点赞数据进行 set 并设置过期时间。
再配置一个定时任务,比如10分钟一次,先读取set 集合里的元素,可以通过 spop 弹出一个元素 也就是需要同步点赞数量的文章id 去读取 redis key对应的点赞数 更新到数据库里。这样就确保了 数据库自动定时同步 Redis中的点赞数据。即使 redis 数据丢失,也还可以用数据库进行初始化 redis 缓存。
消息队列
比如一个任务处理起来比较消耗时间,不适合在同步的api 接口里完全实现。那么可以考虑使用消息队列,把任务发送过去。然后使用常驻的进程去消费这个消息队列。实现异步任务的处理。不过这时候要考虑一些情况,比如任务处理失败了怎么办,消息是否应该仍会队列继续进行处理 ?
通常的做法是,写另外一个监控程序,关注异步任务的处理状态,比如这些异步任务实际在数据库中是有对应记录的,异步消费进程在处理时需要标记这个任务的处理状态,比如处理到哪一步了。这时候监控程序只需要把超时还没有处理成功的任务数量进行监控,发短信/邮件通知给开发者知晓,去进行处理。比如可以标记尝试处理次数,到达之前自动放回队列进行处理,迟到超过尝试次数。
榜单功能
非常适合用 zset 数据结构
本文 最佳观看地址:https://www.hashspace.cn/redis-command.html 阅读 766