OJ开发受阻,先了解一下新玩意redis,只列出最基本的用法,作为我个人的了解
以下实际应用来自Redis开发与运维
redis用法
❤字符串
1.缓存
redis最常用的应用就是作为缓存层为存储层MySQL减负
if(redis.get(str) != null)...
2.共享Session
暂时用不着
3.计数
return redis.incr(key)
❤哈希
1.替换SQL持久化
书P36
法1 多个key
按照key=列,value=值,再用一个更大的key来映射多个列
set user:1:name tom
set user:1:age 13
set user:1:city beijing
set user:2.....
法2
set user:1:serializae(userInfo)
法2的缺点是每个属性不能单独更新
法3:多个field
hmset user:1 name tom age 23 city beijing
❤列表
1.MQ
lpush+brpop
2.文章分页
假设文章使用哈希存储
hmset article:1 title a timestamp b content c
hmset article:2....
添加则
lpush user:1:articles article:1 article:5
分页
atricles = lrange user:1:articles 0 9
for article in {articles}
hgetall {article}
3.有限集合 lpush+ltrim
4.Stack+Queue
❤集合
1.标签
sadd user:1:tags tag1 tag2 tag6
sadd tag1:users user:1 user:2
(以上需要在同一事务进行)
删除则同理用srem
计算共同感兴趣标签
sinter user:1:tags user:3:tags
❤有序集合
注意API是score member的形式
1.排行榜!!
mike获得3个赞
zadd user:ranking:today 3 mike
之后再获得1个赞用zincrby
取消赞 zren user:ranking:today mike
展示获赞Top10
zrevrangebyrank user:ranking:today 0 9
展示用户信息和分数
hgetall user:info:tom
zscore user:ranking:today tom
zrank user:ranking mike