redis 基础
client.incr(‘next:user:id’, function(id){})
// 自增 next:user:id字段,callback里拿到自增后的值client.set(‘user:’ + username, userid);
// 设置普通的k/vclient.get(‘user:’ + username, function (err, userid) {})
// 获取 k 的valueclient.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这种对应操作
注意点
- 拿任何key的速度都是一样的
- 不能无限存,因为吃内存。找机制要干掉相应的key
- 重启依然在,随时说是in-memory的,但实际也会持久化在disk上
命令
- FLUSHDB - 清楚所有key #很危险#
- keys * - 列出所有key
- EXPIRE test 60 - 设置test这个key的60秒后过期
- TTL test - 查看test这个key还剩多少秒过期
- SETEX test 60 “Expire” - 结合set 和expire两个命令的能力
- PUBSUB CHANNELS - 列出所有pubsub的channel
- PUBSUB NUMSUB “testpubsub” - 订阅某个channel的sub的数量
- PUBLISH “testpubsub” “Hey!” - 向某个channel 发消息
- 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. )