Redis之使用 (4)

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 缺点

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxwxg.html