user002 = {"peiqi", "qiaozhi", "lingyang"}
127.0.0.1:6379> sadd user001 peiqi qiaozhi danni (integer) 3 127.0.0.1:6379> sadd user002 peiqi qiaozhi lingyang (integer) 3 127.0.0.1:6379> sinterstore user_all user001 user002 1) "peiqi" 2) "qiaozhi" 6. 有序集合即有顺序的集合
6.1 概述有序、去重
元素都是字符串
每个元素都关联着一个浮点数分值(score),并按照分值从小到大的顺序排列集合中的元素(分值可以相同)
最多包含个元素
示例:
一个保存的水果价格的有序集合
分值 2.0 4.0 6.0 8.0 10.0元素 西瓜 葡萄 芒果 香蕉 苹果
一个保存了员工薪水的有序集合
分值 6000 8000 10000 12000元素 lucy tom jim jack
一个保存了正在阅读某些技术书的人数
分值 300 400 555 666 777元素 核心编程 阿凡提 本拉登 阿姆斯特朗 比尔盖茨
6.2 增加
zadd key score member
# 有序集合中添加一个成员 zadd key score member # 查看指定区间元素(升序) zrange key start stop [withscores] # 查看指定区间元素(降序) zrevrange key start stop [withscores] #反转 # 查看指定元素的分值 zscore key member # 返回指定区间元素 # offset:跳过多少个元素 # count : 返回几个 # 小括号:开区间 zrangebyscore key min max [withscore] [limit offset count] 例如: zrangebyscore salary (6000 (8000 # 删除6000-8000之间的所有元素 # 删除成员 zrem key member # 增加或者减少分值 zincrby key increment member # 返回元素逆序排名 zrevrank key member # 删除指定区间的元素 zremrangebyscore key min max #返回集合中元素个数 zcard key # 返回指定范围中元素的个数 zount key min max # 并集 numkeys为想要合并的key的个数 zunionstore destination numkeys key [weights 权重值] [aggregate sum|min|max] # 交集 zinterstore destination numkeys key1 key2 weights weight aggregate sum|min|max 6.3 交并集 # 交集(weights代表权重值,aggregate代表聚合方式 - 计算权重值,然后聚合) zinserstore destination numkeys key1 key2 `zinterstore z_inter 2 z1 z2 weights 0.5 0.3 aggregate max` # 并集 zunionstore destination numkeys [weights 权重值] [aggregate sum|min|max] 6.4 应用场景网易云音乐排行榜
1、每首歌的革命作为元素(不考虑重复)
2、每首歌的播放次数作为分值
3、使用zrevrange来获取播放次数最多的歌曲
四、数据持久化持久化:将数据库从掉电易失的内存放到永久储存的设备上
1. RDB默认模式
保存真实的数据
将服务器包含的所有数据库数据以二进制文件的形式保存到硬盘里面
默认文件名:var/lib/redis/dump.rdb
创建RDB的方式有两种
1.1 手动操作服务器执行客户端发送的save或者bgsave命令
127.0.0.1:6379> save OK 127.0.0.1:6379> exit chancey@Server:~$ sudo ls /var/lib/redis/ dump.rdb特点
执行save命令过程中,redis服务器将被阻塞,无法处理客户端发送命令请求,在save之后,吴福气才会重新开始处理客户端发送的命令请求
如果RDB文件存在,那么服务器将自动使用新的RDB文件覆盖原来的RDB文件
127.0.0.1:6379> bgsave Background saving started 127.0.0.1:6379> exit chancey@Server:~$ sudo ls -l /var/lib/redis/ 总用量 4 -rw-rw---- 1 redis redis 581 9月 2 14:22 dump.rdb
执行过程如下
客户端发送bgsave给服务器
server马上返回Background saving started 给client
server 的 fork() 子进程做这件事情
server继续提供服务
子进程创建完RDB文件后再告知Redis server
配置文件的相关操作
/etx/redis/redis.conf dir /var/lib/redis # 表示redis备份路径 dbfilename dump.rdb # 文件名 1.2 自动备份设置配置文件条件满足时自动保存(使用最多)
# 命令行示例 redis>save 300 10表示如果距离上一次创建的RDB文件已经过去了300秒,并且服务器的所有数据库总共发生了不少于10的修改,那么执行命令dbsave
配置文件默认设置
save 900 1 save 300 10 save 60 10000 1、表示只要三个条件中的任意一个被满足时,服务器就会执行bgsave 2、每次创建RDB文件之后,服务器为实现自动持久化而设置的事件计数器和次数计数器就会被清零,并重新开始计数,所以多个保存条件的效果不会叠加 1.3 缺点