basic redis

redis 基础

  • client.incr(‘next:user:id’, function(id){})
    // 自增 next:user:id字段,callback里拿到自增后的值

  • client.set(‘user:’ + username, userid);
    // 设置普通的k/v

  • client.get(‘user:’ + username, function (err, userid) {})
    // 获取 k 的value

  • client.hset(user_string, ‘name’, name);
    // 设置某个hash类型的某个字段的值

  • client.lpush(‘messages’, id);
    // 插入某个list 的左侧某个值

  • client.hget(‘user:’ + userid, ‘name’, function (err, name) {})
    // 获取某个hash类型的某个字段的值

  • client.lrange(‘messages’, 0, -1);
    // 获取list中某一个范围的数组

类型

  • string 普通的k/v 上面的set都是string
  • hash 就是 一个key 对应一个obj的感觉 hset这种操作
  • list 就是数组的玩意, lpush这种对应操作

注意点

  1. 拿任何key的速度都是一样的
  2. 不能无限存,因为吃内存。找机制要干掉相应的key
  3. 重启依然在,随时说是in-memory的,但实际也会持久化在disk上

命令

  1. FLUSHDB - 清楚所有key #很危险#
  2. keys * - 列出所有key
  3. EXPIRE test 60 - 设置test这个key的60秒后过期
  4. TTL test - 查看test这个key还剩多少秒过期
  5. SETEX test 60 “Expire” - 结合set 和expire两个命令的能力
  6. PUBSUB CHANNELS - 列出所有pubsub的channel
  7. PUBSUB NUMSUB “testpubsub” - 订阅某个channel的sub的数量
  8. PUBLISH “testpubsub” “Hey!” - 向某个channel 发消息
  9. zadd(‘users’, Date.now(), user) - 拆入 users这个sortedset score是date,值是user

如果有多个不同app的内容要放入redis。可以用set来分离
每个app的内容放入一个set里

sorted set可以用时间戳来做score排序,这样就能按时间顺序排序redis的内容

可以根据过期时间来删除特定的key( We will have to use EXPIRE on every creation and update. )