扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
内存数据库,也叫缓存,可以存储访问频次很高的数据
成都创新互联主要从事成都网站设计、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务西丰,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
redis是一个nosql(not only sql不仅仅只有sql)数据库,翻译成中文叫做非关系型型数据库
Redis可以说是除MySQL之外用的最多的一个数据库了!众所周知,它是一个种非关系型数据库(NoSQL),当然它的出现也绝不是为了取代MySQL。非关系型数据库有很多种类型:面向列的NoSQL、基于图的NoSQL、文档型NoSQL ...... Redis是一种Key-Value型的NoSQL。
使用Redis并不难,他和MySQL的关系也不大,甚至我觉得Redis的学习难度要小于MySQL。但是Redis在目前的技术架构中非常常见,它的作用也绝对不仅仅是缓存中间件,所以很显然这是Java从业者的必备技能。Redis在大厂面试中出现的频率非常的高,学好它能帮助你在面试中脱颖而出!
其实在写这份学习资料的时候,我才刚刚毕业,也谈不上多么精通Redis!但是我觉得学习任何一门数据库都是一个循序渐进的过程。先熟练掌握它的使用、然后了解它的底层原理、接着在实践中应用它、最后就是读源码完全吃透它!因为读者水平有限接下来我将推出 「《Java之禅 | Redis篇》」 ,希望能够给苦海中的同学一些指引,其实我觉得学完这两篇再背一下面经就可以和面试官侃侃而谈了!
最重要的事情说三遍: 「一定要多练、多练、多练!照着文档多敲多写,熟能生巧,切忌光看不动手!」
学习Redis一定逃不过黄健宏老师的这本 「《Redis设计与实现》」 ,这本书并不是教你怎么使用Redis的,而是带你深入了解Redis内部原理的!总结起来就是:通俗易懂、恍然大悟!
当然黄老师还有一本 「《Redis使用手册》」 ,这个的热度远远不如前一本,这本书更像是一本工具书,系统化介绍Redis命令和使用。
视频的话其实我觉得做的比较好的是 「尚硅谷的《Redis6入门到精通》和黑马程序员的《Redis入门到实战》」 。
「《Java之禅 | Redis篇》」 是我接下来要整理并开源的一份资料,我希望它能够以更加通俗易懂地方式教你使用和理解Redis。
写这个的初衷当然是希望后人能够更加顺畅的学习和使用它,我的学习之路其实挺艰难的,感觉很多教学视频讲的都不是太好,然后CSDN博客又有点乱,希望自己能够把我的理解与心得帮助其他人吧!
这份资料全篇分为 「《Redis技法》和《Redis基石》」 两部分。《Redis技法》主要是教你怎么使用,从简单的客户端到Java操作到高级应用,不涉及Redis的原理。《Redis基石》主要是学习Redis的设计思想和内部思路,希望能够窥探到一些Redis的底层实现,帮助大家更好地了解Redis。
作者:一壶漂泊难入喉
原文出处:
redis是一个单线程的NoSQL数据库,主要用来做数据缓存,一般大型网站的应用和数据库之间的那一层就是Redis。比如京东商城的页面查找功能,用户接触到的查询的第一层就是Redis数据缓存层,缓存中找不到的数据,再进入数据库查询。Redis中缓存热点数据,能够保护数据库,提高查询效率。
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。
互联网需求的3高: 高并发,高可扩,高性能。
Redis 是一种运行速度很快,并发性能很强,并且运行在内存上的NoSql(not only sql)数据库
NoSQL数据库 和 传统数据库 相比的优势:
NoSQL数据库无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段 简直就是一个噩梦。
Redis的常用使用场景:
缓存 ,毫无疑问这是Redis当今最为人熟知的使用场景。在提升服务器性能方面非常有效;一 些频繁被访问的数据,经常被访问的数据如果放在关系型数据库,每次查询的开销都会很 大,而放在redis中,因为redis 是放在内存中的可以很高效的访问
排行榜 ,在使用传统的关系型数据库(mysql oracle 等)来做这个事儿,非常的麻烦,而利 用Redis的SortSet(有序集合)数据结构能够简单的搞定;
好友关系 ,利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好 友、共同爱好之类的功能;
Session共享 ,以jsp为例,默认Session是保存在服务器的文件中,如果是集群服务,同一个 用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论 用户落在那台机器上都能够获取到对应的Session信息。
下载: redis: 图形工具:
安装(Linux)
上传tar.gz包,并解压:tar -zxvf redis-5.0.4.tar.gz
安装gcc:yum -y install gcc (忘记是否安装过,可以使用 gcc -v 命令查看gcc版本,如果没有安装过,会提示命令不存在)
进入redis目录,进行编译:make
编译之后,开始安装:make install
后台运行方式—— redis默认不会使用后台运行,如果你需要,修改配置文件daemonize=yes,当你后台服务启动的 时候,会写成一个进程文件运行
vim /opt/redis-5.0.4/redis.conf
以配置文件的方式启动:
cd /usr/local/bin
redis-server /opt/redis-5.0.4/redis.conf
关闭数据库:
单实例关闭 ——redis-cli shutdown
多实例关闭 ——dis-cli -p 6379 shutdown 默认的端口6379,如改过,更换端口
缓存:这应该是 Redis 最主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力。
共享Session:对于一些依赖 session 功能的服务来说,如果需要从单机变成集群的话,可以选择 redis 来统一管理 session。消息队列系统:消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务 解耦、非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功 能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足。比如在分布式爬虫系统中,使用 redis 来统一管理 url队列。
分布式锁:在分布式服务中。可以利用Redis的setnx功能来编写分布式的锁,虽然这个可能不是太常用。 当然还有诸如排行榜、点赞功能都可以使用 Redis 来实现,但是 Redis 也不是什么都可以做,比如数据量特别大时,不适合 Redis,我们知道 Redis 是基于内存的,虽然内存很便宜,但是如果你每天的数据量特别大,比如几亿条的用户行为日志数据,用 Redis 来存储的话,成本相当的高。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流