第一章:初识Redis
1.1 Redis简介
1.1.0 简介:
● 非关系型数据库
● 可存储key与五种类型的映射
● 存储在内存,可持久化到硬盘
● 可实现客户端分片
1.1.1 Redis与其他数据库和软件的对比
● 暂时除了Redis和MySQL没有用过例子中的其他库,所以不多做描述
1.1.2 redis附加特性:
● 持久化:
时间点转储:指定时间内达到指定数量的操作数,执行存储
命令追加:每条命令都追加到文件,可根据数据重要性设置追加操作的间隔时间
● 高可用:
主从复制:主服务执行写命令,复制到从服务,可达到不集中对主服务访问,分压的效果
1.1.3 使用redis的理由:
● 操作内存效率比关系型数据库高
● 随机写的效率比普通数据库快
1.2 redis数据结构简介(只列举基本命令):
1.2.1 String(基本单位,字符、整数或浮点数):
● set:设置
● get:获取
● del:删除
1.2.3 List(有序的字符串链表、可重复):
● lpush、rpush:左侧、右侧插入元素
● lpop、rpop:左侧、右侧弹出元素
● lrange:获取索引范围内所有值
● lindex:获取指定位置的元素
1.2.2 Set(无序的字符串、不可重复):
● sadd::添加元素
● srem:移除元素
● smembers:获取所有元素
● sismember:检查指定元素是否存在
1.2.4 Hash(无序的kv映射、不可重复):
● hset:添加
● hget:获取
● hgetall:获取所有键值对
● hdel:删除某个键
1.2.5 Zset(有序的kv映射、不可重复):
● zadd:添加元素
● zrange:获取下标范围内所有元素
● zrangebyscore:获取给定数值范围内所有元素
● zrem:移除
1.3 你好redis(用redis构建投票 站后端功能)
1.3.0 要求:
● 超过200票,提前显示
● 提前至少一天
● 评分会随时间递减:评分 = 票数*固定值(一天秒数’86400’/票数阈值’200′ = 432) + 发布时间的nuix时间戳
1.3.1 对文章进行投票
redis用到的存储结构
● 文章信息的hash,包括标题、 址链接、发布的用户、时间、票数
● 按时间排序文章的zset
● 按评分排序文章的zset
● 防止重复投票每篇文章创建一个投票人set,每次投票添加该set,一周后不能再投票,并删除该set
程序简述:
● 计算发布时间是否大于一周,超过则直接结束
● 投票人set添加该用户,如果成功则没有投过票,则文章hash票数+1,评分zset + 432
1.3.2 发布并获取文章:
发布程序简述:
● 生成文章ID
● 将发布用户添加到用户投票名单,并设置一周过期时间
● 创建文章信息到hash
● 添加到时间排序set和评分排序set里
获取程序简述:
● 传入开始和结束索引,根据索引查询评分排序set返回多个文章id
● 遍历id查询文章详情,并返回
1.3.3 对文章分组:
分组并按评分显示程序简述:
● 利用zinterstore命令取set和zset根据key的交集生成新zset,新zset的value可自定义计算规则(set的value默认为1),默认计算为取和,这里需要取评分或时间,所以计算规则为取最大值即可。
● 根据之前的评分zset和定义的分组set取交集,即可获得分组内根据评分排序的文章详情。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!