黑马程序员技术交流社区

标题: 【武汉校区】JavaEE资源分享:Redisd总结 [打印本页]

作者: 武汉分校-小舞    时间: 2017-7-21 13:46
标题: 【武汉校区】JavaEE资源分享:Redisd总结
【武汉校区】JavaEE资源分享:Redisd总结

(本文稿由就业部李老师提供)

Redisd的应用场景

1、会话缓存(Session Cache)
最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis 缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗?
幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台Magento也提供Redis的插件。

2、全页缓存(FPC)
除基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似PHP本地FPC。
再次以Magento为例,Magento提供一个插件来使用Redis作为全页缓存后端。
此外,对WordPress的用户来说,Pantheon有一个非常好的插件wp-redis,这个插件能帮助你以最快速度加载你曾浏览过的页面。

3、队列
Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如Python)对 list 的 push/pop 操作。
如果你快速的在Google中搜索“Redis queues”,你马上就能找到大量的开源项目,这些项目的目的就是利用Redis创建非常好的后端工具,以满足各种队列需求。

4.排行榜/计数器
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。所以,我们要从排序集合中获取到排名最靠前的10个用户–我们称之为“user_scores”,我们只需要像下面一样执行即可:
当然,这是假定你是根据你用户的分数做递增的排序。如果你想返回用户及用户的分数,你需要这样执行:
ZRANGE user_scores 0 10 WITHSCORES
Agora Games就是一个很好的例子,用Ruby实现的,它的排行榜就是使用Redis来存储数据的,你可以在这里看到。

5、发布/订阅
最后(但肯定不是最不重要的)是Redis的发布/订阅功能。发布/订阅的使用场景确实非常多。我已看见人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能来建立聊天系统!(不,这是真的,你可以去核实)。
Redis提供的所有特性中,我感觉这个是喜欢的人最少的一个,虽然它为用户提供如果此多功能。

redis数据结构

redis是一种高级的key:value存储系统,其中value支持五种数据类型:
1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)

而关于key,有几个点要提醒大家:
1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
2.key也不要太短,太短的话,key的可读性会降低;
3.在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。

redis持久化 – 两种方式

redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。
RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;
AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。
其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。
如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,+持久化--就像memcache一样。

【聊聊redis持久化 – RDB】
[hide=d1000]RDB方式,是将redis某一时刻的数据持久化到磁盘中,是一种快照式的持久化方法。

redis在进行数据持久化的过程中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件。正是这种特性,让我们可以随时来进行备份,因为快照文件总是完整可用的。

对于RDB方式,redis会单独创建(fork)一个子进程来进行持久化,而主进程是不会进行任何IO操作的,这样就确保了redis极高的性能。

如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。

虽然RDB有不少优点,但它的缺点也是不容忽视的。如果你对数据的完整性非常敏感,那么RDB方式就不太适合你,因为即使你每5分钟都持久化一次,当redis故障时,仍然会有近5分钟的数据丢失。所以,redis还提供了另一种持久化方式,那就是AOF[/hide]

【聊聊redis持久化 – AOF】

AOF,英文是Append Only File,即只允许追加不允许改写的文件。

如前面介绍的,AOF方式是将执行过的写指令记录下来,在数据恢复时按照从前到后的顺序再将指令都执行一遍,就这么简单。
[hide=d1000]我们通过配置redis.conf中的appendonly yes就可以打开AOF功能。如果有写操作(如SET等),redis就会被追加到AOF文件的末尾。

默认的AOF持久化策略是每秒钟fsync一次(fsync是指把缓存中的写指令记录到磁盘中),因为在这种情况下,redis仍然可以保持很好的处理性能,即使redis故障,也只会丢失最近1秒钟的数据。[/hide]
如果在追加日志时,恰好遇到磁盘空间满、inode满或断电等情况导致日志写入不完整,也没有关系,redis提供了redis-check-aof工具,可以用来进行日志修复。

作者: silenceandxh    时间: 2017-7-21 14:42
学习了,谢谢老师
作者: 武汉分校-小舞    时间: 2017-7-21 14:48
silenceandxh 发表于 2017-7-21 14:42
学习了,谢谢老师

好好学习,天天向上
作者: nbhm    时间: 2017-7-24 12:16
需要好好的聊聊

作者: zxj_v    时间: 2017-7-24 19:22
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
作者: zhudongpo520    时间: 2017-7-25 00:15
433333333333
作者: evanchen    时间: 2017-7-25 09:33
Redisd总结很好
作者: 全掌天下    时间: 2017-7-31 10:21
技多不压身
作者: fanliansuo130    时间: 2017-8-1 21:29
谢谢分享,学习学习
作者: rongxiang    时间: 2017-8-2 14:48
谢谢老师
作者: @211    时间: 2017-8-10 19:48
学习!!!!!!!!!!!
作者: 小黑马哥    时间: 2017-8-10 19:58
学习!!!!!!!!!!!


作者: 风一阵    时间: 2017-8-11 02:03
这个不错
作者: czbk184    时间: 2017-8-17 00:03
十分精彩,。。。。。。加油

作者: Daniel.max    时间: 2017-8-17 10:48
好东西分享分享
作者: fan130121    时间: 2017-8-17 14:22
redis学习
作者: 黑心砖头    时间: 2017-8-17 16:52

silenceandxh 发表于 2017-7-21 14:42
学习了,谢谢老师

好好学习,天天向上
作者: zhuZX    时间: 2017-8-17 17:35
好好学习,天天向上

作者: beforeyou    时间: 2017-8-17 23:03
谢老师,

作者: w1920961081    时间: 2017-8-18 11:43
xxxxxxxxxxx
作者: 2998457242    时间: 2017-8-18 13:48
都靠你了哦
作者: guojiewan8    时间: 2017-8-18 14:06
aaaaaaaaaaaaa

作者: future。    时间: 2017-9-6 23:11
可以 滴
作者: zbr878458173    时间: 2017-9-7 17:12
很好的总结 可以收藏了。。。
作者: wchhhao123    时间: 2017-9-9 17:16
frewf43wfw
作者: zjc11    时间: 2017-9-11 15:07
感谢分享
作者: lcjzyw    时间: 2017-9-26 11:56
加油加油加油加油加油机
作者: a8950783    时间: 2017-10-10 19:44
好好学习

作者: newu    时间: 2017-10-10 23:17
好东西分享分享
作者: 诸暨天    时间: 2017-10-11 21:37
https://pan.baidu.com/share/link ... 91&uk=321653742
作者: xgwhsgws    时间: 2017-10-16 22:24
很有用,值得学习,感谢楼主分享
作者: solarwind    时间: 2017-10-21 11:07
可能你看看你看你看
作者: zgb296    时间: 2017-10-21 14:21

谢谢分享
作者: 奋斗syn    时间: 2017-10-21 14:32
学习!!!!

作者: iyi    时间: 2017-10-21 16:27
支持 看看学习的 持久化的什么
作者: dukasvan    时间: 2017-10-27 10:05
非常感谢
作者: heimazombie    时间: 2017-10-27 15:08
学习了,谢谢老师
作者: YourName    时间: 2017-10-31 11:52
Dddddddddd

作者: nyx    时间: 2017-11-1 00:25
66666666666666666666666
作者: shadow16    时间: 2017-11-1 14:03
看看......

作者: level    时间: 2017-11-8 07:27
非常厉害的redis总结啊 a
作者: shijinsong    时间: 2017-12-14 11:18
挺好的.。。。。。。。。
作者: 大慈相    时间: 2017-12-15 00:09
感谢分享
作者: 心随风飞01    时间: 2017-12-21 00:19
youshipingma
作者: tao0o    时间: 2017-12-21 15:07
6666666666666666
作者: 你好,黑马    时间: 2017-12-21 15:13
你好,黑马
作者: 枯芜123    时间: 2017-12-22 13:29
看看咋样
作者: IF_EVER    时间: 2017-12-26 16:17
学习学习

作者: 执念一生xsq    时间: 2018-1-16 19:44
gggggggggggggggggggggggggggggggggg
作者: yuanzhang    时间: 2018-1-17 21:31
学习学习
作者: 一个菜鸟    时间: 2018-1-18 22:04
66666666666666666666666

作者: UncleJoke    时间: 2018-1-19 11:04
88888888888888888888
作者: 1418918514    时间: 2018-1-19 12:21
好东西

作者: 几人共钓寒江雪    时间: 2018-1-24 14:31

Redisd总结很好
作者: infantile、往日    时间: 2018-1-24 19:45
厉害了
作者: 路过的龙    时间: 2018-1-26 14:27
谢谢分享------
作者: 尛埥緒    时间: 2018-1-26 22:16
java黑马279
作者: yqh    时间: 2018-2-24 11:56
我要学习
作者: 1910414411    时间: 2018-2-26 23:16
kanqilaiyoudianyong
作者: @小猪猪    时间: 2018-3-8 22:06
666666666666666666666
作者: yinshihao    时间: 2018-3-10 19:58
11111111111111111111111111111111111111
作者: 夕印若带    时间: 2018-3-12 08:41
有用哈哈
作者: kimx5    时间: 2018-3-29 00:43
很重要的样子啊
作者: awxa    时间: 2018-3-30 15:30
1123213123
作者: lwqmax    时间: 2018-3-31 19:37
学习学习学习
作者: 黑兔    时间: 2018-4-4 10:52
好好学习,天天向上
作者: tian8720593    时间: 2018-4-4 11:54
看一看经验
作者: tian8720593    时间: 2018-4-4 11:55
看一看经验
作者: 慕容i紫英    时间: 2018-4-4 21:53
支持一下,好好学习!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 随风521    时间: 2018-4-5 09:14
学习一下redeis
作者: long144    时间: 2018-4-5 23:30
学习了,谢谢老师
作者: qinchun2046    时间: 2018-4-11 10:42
OHOIUHOUHIHOIUH
作者: Yanziyun1234    时间: 2018-4-11 20:05

作者: 方东    时间: 2018-4-15 10:20
很期待这个东西
作者: 方东    时间: 2018-4-15 10:21
找这东西好久了l
作者: xiekaiping    时间: 2018-4-15 22:51
111111111111111111111
作者: sunbohan00    时间: 2018-4-18 17:45
感谢分享,好人一生平安
作者: 李培根    时间: 2018-4-27 17:16
看看具体内容
作者: 超然洒脱    时间: 2018-4-27 18:37
干货很多,看看
作者: cfbzhyr    时间: 2018-5-6 15:30
多谢老师分享
作者: jason463720742    时间: 2018-5-7 17:12
学习学习
作者: jiazhiyuan    时间: 2018-5-7 18:57
链接给我发过来

作者: 彭俊涛    时间: 2018-5-14 16:48
                                        666
作者: 文艺复兴    时间: 2018-5-18 12:03
感谢分享666666666666
作者: guoaodi    时间: 2018-5-20 10:46
trhrthuwtrjtrjktykyulyuluyil;ui;ui;
作者: able_l    时间: 2018-5-22 12:46
学习一下
作者: kellerzhu    时间: 2018-6-1 14:55
东发福啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: foxen    时间: 2018-6-1 15:02
很好的资源 ,大赞一个!!!
作者: bodhixu    时间: 2018-6-2 21:17
好好学习,天天向上
作者: 一棵松    时间: 2018-6-4 17:28
ffffffffffffffffffffffffff
作者: 轨迹72    时间: 2018-7-4 14:10
6666666666666666666
作者: 蔡超凡    时间: 2018-7-5 10:12
不错不错,学习学习
作者: zyc18356098056    时间: 2018-7-13 16:40
好东西 值得学习
作者: zxc164205    时间: 2018-7-13 21:29
看看看一下
作者: a3939889    时间: 2018-7-13 22:49
谢谢老师·!!!!!!!
作者: healthy    时间: 2018-7-22 22:11
redis很强大,这个特性牛逼
作者: zhangsanfenng    时间: 2018-8-15 21:59
66666666666666
作者: jia143    时间: 2018-8-29 09:04
看看看看
作者: 打鼾的土豆    时间: 2019-1-1 02:09
谢谢分享
作者: 打鼾的土豆    时间: 2019-1-1 02:10
谢谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2