Appearance
redis — Redis 客户端
redis 模块提供了 Redis 缓存操作功能,支持 String、Hash、List、Set、ZSet 等数据结构。
引入方式
javascript
var redis = require("redis")String 操作
Get / Set
javascript
redis.Set("key", "value", 3600) // 设置,过期时间 3600 秒
var val = redis.Get("key") // 获取SetNX — 仅当不存在时设置
javascript
var ok = redis.SetNX("lock", "1", 30) // 返回 boolMGet / MSet — 批量操作
javascript
redis.MSet("key1", "val1", "key2", "val2")
var vals = redis.MGet("key1", "key2")Incr / Decr — 自增自减
javascript
redis.Incr("counter") // +1
redis.Decr("counter") // -1
redis.IncrBy("counter", 10) // +10
redis.DecrBy("counter", 5) // -5其他
javascript
redis.Append("key", "suffix")
redis.StrLen("key")
redis.GetSet("key", "newVal") // 设置新值,返回旧值Key 操作
javascript
redis.Del("key1", "key2") // 删除
redis.Exists("key") // 是否存在
redis.Expire("key", 3600) // 设置过期时间(秒)
redis.Persist("key") // 移除过期时间
redis.TTL("key") // 剩余生存时间
redis.Type("key") // 值类型
redis.Keys("user:*") // 按模式查找
redis.Rename("oldKey", "newKey") // 重命名Hash 操作
javascript
redis.HSet("user:1", "name", "张三", "age", 25)
redis.HGet("user:1", "name") // "张三"
redis.HGetAll("user:1") // {name: "张三", age: "25"}
redis.HDel("user:1", "age") // 删除字段
redis.HExists("user:1", "name") // 字段是否存在
redis.HIncrBy("user:1", "age", 1) // 字段值 +1
redis.HKeys("user:1") // 所有字段名
redis.HVals("user:1") // 所有字段值
redis.HLen("user:1") // 字段数量
redis.HMGet("user:1", "name", "age") // 批量获取List 操作
javascript
redis.RPush("list", "a", "b", "c") // 尾部插入
redis.LPush("list", "x") // 头部插入
redis.LPop("list") // 弹出头部
redis.RPop("list") // 弹出尾部
redis.LLen("list") // 列表长度
redis.LRange("list", 0, -1) // 获取所有元素
redis.LIndex("list", 0) // 按索引获取
redis.LSet("list", 0, "newVal") // 按索引设置
redis.LRem("list", 1, "val") // 移除元素
redis.LTrim("list", 0, 9) // 保留前 10 个Set 操作
javascript
redis.SAdd("set", "a", "b", "c") // 添加成员
redis.SRem("set", "a") // 移除成员
redis.SMembers("set") // 所有成员
redis.SIsMember("set", "a") // 是否成员
redis.SCard("set") // 成员数量ZSet(有序集合)操作
javascript
redis.ZAdd("rank", {Score: 100, Member: "user1"}, {Score: 200, Member: "user2"})
redis.ZRem("rank", "user1")
redis.ZRange("rank", 0, -1) // 按排名范围获取
redis.ZRangeWithScores("rank", 0, -1) // 获取成员及分数
redis.ZScore("rank", "user1") // 获取分数
redis.ZRank("rank", "user1") // 获取排名
redis.ZCard("rank") // 成员数
redis.ZIncrBy("rank", 10, "user1") // 增加分数Pub/Sub
javascript
redis.Publish("channel", "message") // 发布消息完整示例
javascript
var redis = require("redis")
// 缓存用户信息
redis.Set("user:1", JSON.stringify({name: "张三", age: 25}), 3600)
var user = JSON.parse(redis.Get("user:1"))
// 计数器
redis.Incr("api:visit:" + request.Path())
// 分布式锁
var locked = redis.SetNX("lock:order:1", "1", 30)
if (locked) {
// 执行业务逻辑
redis.Del("lock:order:1")
}
// 排行榜
redis.ZAdd("rank:score", {Score: 95, Member: "张三"})
redis.ZAdd("rank:score", {Score: 88, Member: "李四"})
var top10 = redis.ZRangeWithScores("rank:score", 0, 9)