需求 功能: P15 发布文章 获取文章 文章分组 投支持票 数值及限制条件 P15 如果一篇文章获得了至少 200 张支持票,那么这篇文章就是一篇有趣的文章 如果这个网站每天有 50 篇有趣的文章,那么网站要把这 50 篇文章放到文章列表页前 100 位至少一天 支持文章评分(投支持票会加评分),且评分随时间递减 实现 投支持票 P15 如果要实现评分实时随时间递减,且支持按评分排序,那么工作量很大而且不精确.可以想到只有时间戳会随时间实时变化,如果我们把发布文章的时间戳当作初始评分,那么后发…
发布与订阅 P52 Redis 实现了发布与订阅(publish/subscribe)模式,又称 pub/sub 模式(与设计模式中的观察者模式类似).订阅者负责订阅频道,发送者负责向频道发送二进制字符串消息.每当有消息被发送至给定频道时,频道的所有订阅者都会接收到消息. 发布与订阅命令 P52 命令 格式 描述 SUBSCRIBE SUBSCRIBE channel [channel ...] 订阅一个或多个频道 UNSUBSCRIBE UNSUBSCRIBE [channel [channe…
用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET 等.基于这些限制,有必要考虑Redis! 相关链接: Redis实战 Redis实战之Redis + Jedis Redis实战之征服 Redis + Jedis + Spring (一) Redis实战之征服 Redis + Jedis + Spring (二) Redis实战之征服 Redis + Jedis + Spring (三) 言归正传,目前Redis大概有3中基于Java语言的…
http://blog.csdn.net/it_man/article/details/9730605 2013-08-03 11:01 1786人阅读 评论(0) 收藏 举报   目录(?)[-] 一简单使用Jedis 二池化使用Jedis 三一致性哈希 四Spring封装参考   用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET 等.基于这些限制,有必要考虑Redis! 相关链接: Redis实战 Redis实战之Redis + Jed…
本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用(主从.事务与锁.持久化)> <redis高级应用(集群搭建.集群分区原理.集群操作> 本文我们继续学习redis与spring的整合,整合之后就可以用redisStringTemplate的setNX()和delete()方法实现分布式锁了. Redis与spring的整合 相关…
本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用(主从.事务与锁.持久化)> <redis高级应用(集群搭建.集群分区原理.集群操作> 本文我们继续学习redis与spring的整合,整合之后就可以用redisStringTemplate的setNX()和delete()方法实现分布式锁了. Redis与spring的整合 相关…
在之前的博客<Redis实战总结-配置.持久化.复制>给出了一种Redis主从复制机制,简单地实现了Redis高可用.然后,如果Master服务器宕机,会导致整个Redis瘫痪,这种方式的高可用性较低.正常会采用多台Redis服务器构成一个集群,即使某台,或者某几台Redis宕机,Redis集群仍能正常运行,从而提高其高可用性. 在Redis中,主要存在两种方式实现Redis集群机制: Redis Sentinel集群机制:在Redis2.X版本,往往都是通过这种方式实现Redis的高可用.r…
示例介绍 示例1:借助Redis实现购物车功能 示例2:Redis实现网页缓存和数据缓存 借助Redis实现购物车功能 每个用户的购物车都是一个散列,散列存储了商品ID与商品订购数量之间的映射.订购商品时,对购物车进行更新:如果用户订购某件商品的数量大于0,那么将这件商品的ID以及用户订购该商品的数量添加到散列里面,如果用户购买的商品已经存在散列里面,那么新的订购数量会覆盖已有的订购数量:相反,如果用户订购某件商品数量不大于0,那么程序将从散列里面移除该条目. 由于整个示例分Controller…
简介 Redis 从 2.6 版本开始引入使用 Lua 编程语言进行的服务器端脚本编程功能,这个功能可以让用户直接在 Redis 内部执行各种操作,从而达到简化代码并提高性能的作用. P248 在不编写 C 代码的情况下添加新功能 P248 通过使用 Lua 对 Redis 进行脚本编程,我们可以避免一些减慢开发速度或者导致性能下降对常见陷阱. P248 将 Lua 脚本载入 Redis P249 SCRIPT LOAD 命令可以将脚本载入 Redis ,这个命令接受一个字符串格式的 Lua 脚…
需求 功能: P23 登录 cookie 购物车 cookie 缓存生成的网页 缓存数据库行 分析网页访问记录 高层次角度下的 Web 应用 P23 从高层次的角度来看, Web 应用就是通过 HTTP 协议对网页浏览器发送的请求进行响应的服务器或者服务(service). Web 请求一般是无状态的(stateless),即服务器本身不会记录与过往请求有关的任何信息,使得失效的服务器可以很容易地被替换掉. Web 服务器对请求进行响应的典型步骤: 服务器对客户端发来对请求(request)进行…
简介 前面介绍了广告定向的实现,它是一个查询密集型 (query-intensive) 程序,所以每个发给它的请求都会引起大量计算.本文将实现一个简单的社交网站,则会尽可能地减少用户在查看页面时系统所需要做的工作. P184 用户和状态 P185 用户对象存储了用户的基本身份标识信息.用户的关注者人数.用户已发布的状态消息数量等信息,它是构建其他可用且有趣的数据的起点. P185 状态消息记录了不同的用户都说了什么,以及不同用户之间进行了什么交流,这些由用户创建的状态消息是社交网站真正的内容.…
阅读目录 1. 字符串命令 2. 列表命令 3. 集合命令 4. 散列命令 5. 有序集合命令 6. 发布与订阅命令 7. 小试牛刀 Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为string(字符串),list(列表),set(集合),hash(散列),zset(有序集合),下面将分别对这5种数据类型的控制命令进行总结,熟话说好记性不如烂笔头,方便以后查看. 回到顶部 1. 字符串命令 Redis种的字符串有三种类型的值:字节,整数和浮点数 (1)命令列表 SE…
字符串 P39 Redis 的字符串是一个有字节组成的序列,可以存储以下 3 种类型的值:字节串(byte string).整数.浮点数. 在需要的时候, Redis 会将整数转换成浮点数.整数的取值范围和系统的长整型(long)的相同,浮点数取值范围和精度与 IEEE 754 标准下的双精度浮点数(double)的相同. Redis 中的自增命令和自减命令 P39 命令 格式 描述 INCR INCR key 将键存储的数字值加上 1 DECR DECR key 将键存储的数字值减去 1 IN…
一些数据库和缓存服务器的特性和功能 P4 名称 类型 数据存储选项 查询类型 附加功能 Redis 使用内存存储(in-memory)的非关系数据库 字符串.列表.哈希表.集合.有序集合 每种数据类型都有自己的专属命令,另外还有批量操作(bulk operation)和不完全(partial)的事务支持 发布与订阅,主从复制(master/slave replication) memcached 使用内存存储的键值缓存 键值之间的映射 增删改查以及其他几个命令 为提升性能而设的多线程服务器 My…
第1章 初识Redis 注:本书在redis3.0版本的,比如redis3.0以后支持服务端集群.3.0之前只能客户端分片.    本章主要内容 1.Redis与其他软件的相同之处和不同之处 2.Redis的用法 3.使用Python示例代码与Redis进行简单的互动 4.使用Redis解决实际问题   Redis是一个远程内存数据库, 它不仅性能强劲, 而且还具有复制特性以及为解决问题而生的独一无二的数据模型. Redis提供了 5种不同类型的数据结构, 各式各样的问题都可以很自 然地映射到这…
本系列文章为学习Redis实战一书记录的随笔. 软件和环境版本:Redis:5.0.7  .Net 5.0 文中不会对Redis基础概念做过多介绍. Redis数据类型和命令可在菜鸟教程学习:https://www.runoob.com/redis/redis-tutorial.html . 示例介绍 实现一个简单的文章投票功能,并根据文章投票得分进行排序展示. 功能设计 使用散列来存储文章信息 article:92617中的冒号只是作为分隔符,可以根据个人信号替换成 | , / 等符号 使用两…
涉及到的key: 1. article_time, 记录文章的发布时间,zset结构 2. article_score, 记录文章的得分, zset结构 得分 = 发布时间 + 投票用户数 X 432 3. voted_article_id, 记录文章的投票用户集合,文章的发布者默认为文章的投票用户,set结构 4. article_article_id, 用来描述文章,hash结构 5. group_groupname, 群组groupname下的文章集合,set结构 6. score_gro…
第一章 初识redis redis 是一个远程内存数据库,性能强劲,具有复制特性以及为解决问题而生的独一无二的数据模型.   1. redis 简介 redis 是一种非关系型数据库(NOSQL) redis 与memcached 的对比,二者都是非关系型数据库,redis支持存储5中不同的数据结构,memcached只能存储普通的字符串,redis还可以以两种不同的方式将数据写入硬盘.redis既可以作为主数据库使用,又可以作为其他存储系统的辅助数据库. 一些数据库和缓存服务器的特性与功能 r…
大约一年多前,公司同事开始使用Redis,不清楚是配置,还是版本的问题,当时的Redis经常在使用一段时间后,连接爆满且不释放.印象中,Redis 2.4.8以下的版本由于设计上的主从库同步问题,就会导致整个问题,不知是否确为这个Bug所致.但从那以后,我就很少敢去尝试使用Redis.曾想转投MongoDB,但公司同事给我的回复是,由于MongoDB宕机,数据丢失,公司损失惨重.于是,我一直停留在Memcached使用范畴,且用的还比较一般. 相关链接: Redis实战 Redis实战之Redi…
Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)接着需要快速的调研下基于Spring框架下的Redis操作. 相关链接: Redis实战 Redis实战之Redis + Jedis Redis实战之征服 Redis + Jedis + Spring (一) Redis实战之征服 Redis + Jedis + Spring (二) Redis实战之征服 Redis + Jedis + Spring (三) 前文有述,Spring提供了对于Redi…
一开始以为Spring下操作哈希表,列表,真就是那么土.恍惚间发现“stringRedisTemplate.opsForList()”的强大,抓紧时间恶补下. 通过spring-data-redis完成LINDEX, LLEN, LPOP, LPUSH, LRANGE, LREM, LSET, LTRIM, RPOP, RPUSH命令.其实还有一些命令,当前版本不支持.不过,这些List的操作方法可以实现队列,堆栈的正常操作,足够用了. 相关链接: Redis实战 Redis实战之Redis +…
提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗? 什么是Redis? Redis能存储哪几种数据结构? Redis有几种持久化机制?它们的优缺点分别是什么? 哪些场景需要使用Redis? 什么是缓存雪崩,如何避免? 什么是缓存穿透,如何避免? 如果你都能回答的上来,恭喜你,说明你对Redis有一定的了解,如果回答不上来,也没关系,本系列博客会对Redis进行一系列的讲解…
Go操作Redis实战   安装Redis客户端 Go语言中使用第三方库https://github.com/go-redis/redis连接Redis数据库并进行操作.使用以下命令下载并安装: go get github.com/go-redis/redis/v8 go get gopkg.in/redis.v8 import "gopkg.in/redis.v8" 注:导入时指定了版本v8,忽略版本是一个常见错误 连接redis 说明:Background返回一个非空的Contex…
不得不说,用哈希操作来存对象,有点自讨苦吃! 不过,既然吃了苦,也做个记录,也许以后API升级后,能好用些呢?! 或许,是我的理解不对,没有真正的理解哈希表. 相关链接: Redis实战 Redis实战之Redis + Jedis Redis实战之征服 Redis + Jedis + Spring (一) Redis实战之征服 Redis + Jedis + Spring (二) Redis实战之征服 Redis + Jedis + Spring (三) 一.预期 接上一篇,扩充User属性:…
原书用 Python 与 Redis 进行交互,我用 PHP 来实现. 环境:LNMP(CentOS 6.6 + Nginx 1.8.0 + MySQL 5.6.23 + PHP 5.6.9)+ Redis 3.0.7 + phpredis 2.2.4 首先在 Linux 开启 Redis 服务: [root@localhost ~]# cd /usr/local/redis/ [root@localhost redis]# ./bin/redis-server ./etc/redis.conf…
首先,我得说明这篇博客基本上就是<<redis in action>>第一章内容的读书笔记. 需求 首先,说明一下,我们的需求 用户可以发表文章,发表时,自己就默认的给自己的文章投了一票. 用户在查看网站的文章时,文章当然是按顺序排列的(这个顺序怎么计算呢?我们把文章发表的时间求出来,这个时间就是离1970年的那个秒数,同时,文章每被投票一次,再那个时间的基础上加上一个常量.最后按照所有文章的总得分来排序). 当然,我也可以就按照发表时间排序. 一篇文章发表后,七天内可以投票,七天…
Redis的具体操作这里就不说了,说一下需求和设计思路. 需求:自己实现一个文章投票的功能1.能够按照时间分页倒叙查看文章信息2.能够给文章投票,一个用户给一篇文章只能投票一次3.需要记录分值.每次投票后就+10分 思路:1.设计一个Hash,用于存储文章的基本信息(标题.内容.创建人).键:article:12.设计一个Set,用于记录一篇文章被哪些用户投过票.键:vole:13.设计一个ZSet,用于记录每一篇文章的分值.键:score RedisUtil.java package cn.d…
redis 实例2 构建文章投票网站后端   1.限制条件 一.如果网站获得200张支持票,那么这篇文章被设置成有趣的文章 二.如果网站发布的文章中有一定数量被认定为有趣的文章,那么这些文章需要被设置在首页前一百至少一天. 三.不提供反对票功能. 2.程序需要随着时间不断减少评分,根据发布时间和当前时间来计算文章的评分  计算方法:文章得到的支持票数量乘以一个常量,然后加上文章发布时间.Unix时间.常量是432.这样文章没获得一票就可以加432分. 3.需要用redis存储各种数据,对于每篇文…
借鉴:http://redis.majunwei.com/topics/sentinel.html     https://blog.csdn.net/u011784767/article/details/77994046?locationNum=6&fps=1 想了解主从备份原理的请看Redis实战——redis主从复制和集群实现原理 概述 Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis的主从结构时,如果主节点挂掉,这时是不能自动进行主备切换和通知客户端主节点下线…
前言 redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用.现在的2.x的稳定版本是2.8.19,也是我们项目中普遍用到的版本. redis在年初发布了3.0.0,官方支持了redis cluster,也就是集群.至此结束了redis 没有官方集群的时代,之前我们用redis cluster用的最多的应该是twitter 发布的Twemproxy(https://github.com/twitter/twemproxy) 还有就是豌豆荚开发的codis (…