在日常开发中,redis 作为高性能的键值存储数据库,被广泛应用于缓存、消息队列、排行榜等场景。本文总结了开发中最常用的 redis 命令,帮助你快速查阅和使用。
一. 基础操作
1.1 连接与通用命令
# 连接 redis redis-cli redis-cli -h 127.0.0.1 -p 6379 redis-cli -a password # 切换数据库 select 0-15 # redis 默认有16个数据库 # 清空当前数据库 flushdb # 清空所有数据库 flushall # 查看 key 的数量 dbsize # 查看服务器信息 info # 测试连接 ping
1.2 key 操作
# 设置键值对(带过期时间) set key value set key value ex 3600 # 3600秒后过期 set key value px 300000 # 300000毫秒后过期 # 获取值 get key # 删除 key del key1 key2 key3 # 判断 key 是否存在 exists key # 设置过期时间 expire key 3600 # 3600秒后过期 expireat key 1700000000 # 指定时间戳过期 # 查看剩余过期时间 ttl key # 返回秒 pttl key # 返回毫秒 # 移除过期时间 persist key # 重命名 key rename oldkey newkey renamenx oldkey newkey # 仅当 newkey 不存在时重命名 # 查找 key keys pattern # keys user:* (生产环境慎用) scan cursor match pattern count count # scan 0 match user:* count 10 (推荐) # 查看 key 类型 type key
二、string(字符串)
# 设置和获取 set key value get key mget key1 key2 key3 # 批量获取 mset key1 val1 key2 val2 # 批量设置 # 数值操作 incr key # 自增1 incrby key 10 # 自增指定值 decr key # 自减1 decrby key 10 # 自减指定值 # 字符串追加 append key value # 返回字符串长度 # 获取长度 strlen key # 截取子串 getrange key 0 -1 # 0到-1表示全部 # 设置指定位置的值 setrange key offset value
三、hash(哈希)
# 设置字段 hset key field value hmset key field1 value1 field2 value2 # 获取字段 hget key field hmget key field1 field2 # 获取所有字段和值 hgetall key # 删除字段 hdel key field1 field2 # 判断字段是否存在 hexists key field # 获取所有字段名 hkeys key # 获取所有字段值 hvals key # 获取字段数量 hlen key # 数值操作 hincrby key field 10 hincrbyfloat key field 10.5
四、list(列表)
# 添加元素(左侧) lpush key value1 value2 lpushx key value # 仅当列表存在时添加 # 添加元素(右侧) rpush key value1 value2 rpushx key value # 弹出元素 lpop key # 左侧弹出 rpop key # 右侧弹出 # 获取列表范围内的元素 lrange key 0 -1 # 获取全部 lrange key 0 10 # 获取前11个 # 获取列表长度 llen key # 删除指定值的元素 lrem key count value # count>0从头删,count<0从尾删,count=0全删 # 获取指定索引的元素 lindex key index # 设置指定索引的元素 lset key index value # 列表修剪 ltrim key 0 100 # 保留0-100的元素,其他删除 # 阻塞操作(实现消息队列) blpop key1 key2 timeout brpop key1 key2 timeout
五、set(集合)
# 添加元素 sadd key member1 member2 # 获取所有元素 smembers key # 删除元素 srem key member1 member2 # 判断元素是否存在 sismember key member # 获取集合大小 scard key # 随机弹出元素 spop key [count] # 随机获取元素(不删除) srandmember key [count] # 集合运算 sinter key1 key2 key3 # 交集 sunion key1 key2 key3 # 并集 sdiff key1 key2 # 差集(key1有key2没有) # 集合运算并存储结果 sinterstore dest key1 key2 sunionstore dest key1 key2 sdiffstore dest key1 key2
六、zset(有序集合)
# 添加元素 zadd key score1 member1 score2 member2 # 获取分数范围内的元素(升序) zrange key 0 -1 zrange key 0 -1 withscores # 带分数 # 获取分数范围内的元素(降序) zrevrange key 0 -1 zrevrange key 0 -1 withscores # 按分数范围获取 zrangebyscore key min max zrevrangebyscore key max min # 获取元素排名(升序) zrank key member # 获取元素排名(降序) zrevrank key member # 获取元素分数 zscore key member # 获取指定分数范围内的元素数量 zcount key min max # 获取集合大小 zcard key # 删除元素 zrem key member1 member2 # 按排名删除 zremrangebyrank key 0 5 # 按分数删除 zremrangebyscore key min max # 增加分数 zincrby key increment member
七、常用应用场景
7.1 缓存场景
# 设置缓存
set cache:user:1001 '{"id":1001,"name":"张三"}' ex 3600
# 获取缓存
get cache:user:1001
# 删除缓存
del cache:user:10017.2 计数器
# 文章阅读量 incr article:1001:views # 点赞数 incr post:1001:likes # 批量点赞计数 incrby post:1001:likes 10
7.3 分布式锁
# 获取锁
set lock:resource unique_value nx px 30000
# 释放锁(lua脚本保证原子性)
eval "if redis.call('get', keys[1]) == argv[1] then return redis.call('del', keys[1]) else return 0 end" 1 lock:resource unique_value7.4 排行榜
# 添加分数 zadd leaderboard 95 "player1" 87 "player2" 92 "player3" # 获取前10名 zrevrange leaderboard 0 9 withscores # 获取玩家排名 zrevrank leaderboard "player1" # 增加分数 zincrby leaderboard 5 "player1"
7.5 消息队列
# 生产者(左侧入队)
lpush queue:task '{"id":1,"type":"email"}'
# 消费者(右侧出队,阻塞5秒)
brpop queue:task 57.6 用户标签
# 添加标签 sadd user:1001:tags "程序员" "技术控" "音乐迷" # 获取标签 smembers user:1001:tags # 判断标签是否存在 sismember user:1001:tags "程序员" # 查找共同标签的用户(交集) sinter user:1001:tags user:1002:tags
到此这篇关于redis 常用命令总结的文章就介绍到这了,更多相关redis 常用命令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论