转载来源:https://www.cnblogs.com/bllbl/p/15358425.html
目录
正文
struct sdshdr { // 记录buf数组中已使用字节的数量 // 等于SDS所保存字符串的长度 int len; // 记录buf数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[]; }
set key value [ex seconds] [px milliseconds] [nx|xx]
字符串类型的内部编码有3种:
Redis会根据当前值的类型和长度决定使用哪种内部编码实现。
整数:
set key 8653 ok object encoding key "int"
短字符:
set key "hello" ok object encoding key "embstr"
长字符:
set key "40 bytes" ok object encoding key "raw"
hset key field value hset uset:1 name tom hget key field hget uset:1 name "tom"
ziplist-value配置时,Redis会使用ziplist实现,节省内存方面比hashtable优秀。
hset hashkey f3 "bigger than 64 bytes" object encoding hashkey "hashtable" hmset hashkey f1 v1 f2 v2 f3 v3 ...... f513 v513 object encoding hashkey "hashtable"
从右边插入元素:rpush key value lrange listkey 0 -1 从左边插入元素:lpush key value linsert key before | after pivot value 查找:lrange key start end 删除:lpop key
用来保存多个的字符串元素,不允许重复元素,无序。
sadd key a b c 添加key 3 srem key a b 删除key 2 scard key 计算key 1 smembers key 获取所有元素 sinter key 求交集 suinon key 求并集 sdiff key 求差集
标签(tag)
给用户添加标签
sadd user:1:tags tag1 tag2 tag3 sadd uset:1:tags tag1 tag2 tag3
给标签添加用户
sadd tag1:users user:1 user:3 sadd tag2:users user:1 user:2
计算用户共同感兴趣的标签
sinter user:1:tag2 user:2:tag
不能重复,可以排序的set,给每个元素设置了一个score作为排序的依据。
列表、集合和有序集合三者异同点
zadd key score member 添加成员 zadd user:ranking 251 tom
有序集合提供排序字段,产生代价,zadd复杂度为Ologn,sadd为O1。
zcard user:ranking 计算成员数 zscore key member 返回某个成员分数 zrank key member 计算成员的排名 zrem key member 删除成员 zrange ... 集合间的操作 (1)交集 (2)并集
添加用户赞数: zadd user:ranking:2016_03_15 mike 3 获得赞后: zincrby user:ranking:2016_03_15 mike 1 取消赞: zrem 获取赞数最多的十个用户: zrevrangebyrank user:ranking:2016_0315 0 9 展示用户信息以及用户分数: 此功能将用户名作为键后缀,将用户信息保存在哈希类型中,至于用户的分数和排名可以使用zscore和zrank hgetall user:info:tom zscore user:ranking:2016_03_15 mike zrank user:ranking:2016_03_15 mike
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。