1.2、初识Redis

Redis可以做什么

  1. 缓存

    合理的使用缓存不仅可以加快数据的访问速度,而且能够有效降低后端数据源
    的压力。

  2. 排行榜系统

    Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地
    构建各种排行榜系统

  3. 计数器应用

    Redis天然支持计数功能而且计数的性能也非常好

  4. 社交网络

    赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,
    Redis提供的数据结构可以相对比较容易地实现这些功能。

  5. 消息队列系统

    消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务解耦、
    非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功能

Redis不可以做什么

在数据规模的角度看,数据可以分为大规模数据和小规模数据,Redis的数据是
存放在内存中,如果数据量到达亿级以上,经济成本相当的高。

用好Redis的建议

  1. 切勿当做黑盒试用,开发与运维同样重要

    实际运维和使用Redis的过程中,很多线上问题和故障都是由于完全把Redis当
    做黑盒造成的,如果不了解Redis的单线程模型,有些开发者会在有上千万个键
    的Redis上配上执行keys *操作,如果不了解持久化的相关原理,会在一个写操
    作量很大的Redis上配置自动保存RDB。而且在很多公司内只有专职的关系型数
    据库DBA,并没有NoSQL的相关运维人员,也就是说开发者很有可能会自己运
    维Redis,对于Redis的开发者来说既是好事又是坏事。站在好的方面看,开发
    人员可以通过运维Redis真正了解Redis的一些原理,不单纯停留在开发上。站
    在坏的方面看,Redis的开发人员不仅要支持开发,还要承担运维的责任,而且
    由于运维经验不足可能会造成线上故障。但是从实际经验来看,运维足够规模
    的Redis会对用好Redis更加有帮助

  2. 阅读源码

    Redis是开源项目,作者对Redis代码的极致追求,Redis的代码量相对于许多
    NoSQL数据库来说非常小,意味着作为普通的开发和运维人员也是可以吃透
    Redis源码。通过阅读优秀的源码,不仅能够加深我们对于Redis的理解,而且
    还能提高自身的编码水平,甚至可以对Redis做定制化,也就是说可以修改
    Redis的源码来满足自身的需求。

正确安装并启动Redis

  1. 安装Redis

    Redis能兼容绝大部分的POSIX系统,例如Linux、OS X、OpenBSD、NetBSD和
    FreeBSD,其中比较典型的是Linux操作系统(例如CentOS、Redhat、
    Ubuntu、Debian、OS X等)。在Linux安装软件通常有两种方法,第一种是通
    过各个操作系统的软件管理软件进行安装,例如CentOS有yum管理工具,
    Ubuntu有apt。但是由于Redis的更新速度相对较快,而这些管理工具不一定能
    更新到最新版本,同时前面提到Redis的安装本身不是很复杂,所以一般推荐第
    二种方式:源码的方式进行安装,整个安装只需一下六步即可完成,以3.0.7版
    本为例:

    $ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
    $ tar xzf redis-3.0.7.tar.gz
    $ ln -s redis-3.0.7 redis
    $ cd redis
    $ make 
    $ make install
    
    • 1) 下载Redis指定版本的源码压缩包到当前目录。
    • 2) 解压缩Redis源码压缩包。
    • 3) 建立一个redis目录的软连接,指向redis-3.0.7。
    • 4) 进入redis目录。
    • 5) 编辑(编译之前确保操作系统已经安装gcc)。
    • 6) 安装。

    这里有两点要注意:第一,第3步中建立一个redis目录的软连接,这样做是为
    了不把redis目录固定在指定版本上,有利于Redis未来版本升级,算是安装软
    件的一种好习惯。第二,第6步中的安装是将Redis的相关运行文件放到
    /usr/local/bin/下,这样就可以在任意目录下执行Redis的命令。

  2. 在Windows中安装Redis
    Redis的官方并不支持微软的Windows操作系统,但是微软公司的开源技术组在
    GitHub上维护了一个Redis的分支:
    https://gihub.com/MSOpenTech/redis

  3. Redis可执行文件说明

    可执行文件 作用
    redis-server 启动Redis
    redis-cli Redis命令行客户端
    redis-benchmark Redis基准测试工具
    redis-check-aof Redis AOF持久化文件检测和修复工具
    redis-check-dump Redis RDB持久化文件检测和修复工具
    redis-sentinel 启动Redis Sentinel
  4. 配置、启动、操作、关闭Redis

    1. 默认配置

      $ redis-server

      redis-server启动Redis后,会打印出一些日志,通过日志可以看到一些
      信息:

      • 当前Redis版本: 3.0.7
      • Redis的默认端口: 6379
      • Redis建议要使用配置文件来启动。
    2. 运行启动
      redis-server加上要修改配置名和值(可以使多对),没有设置的配置将使用默认配置:

      # redis-server --configKey1 configValue1 --configKey2 configValue2

      例如,如果要用6380作为端口启动Redis,那么可以执行:

      # redis-server --port 6380

      虽然运行配置可以自定义配置,但是如果需要修改的配置较多或者希望将
      配置保存到文件中,不建议使用这种方式。

    3. 配置文件启动

      将配置写到指定文件里,例如我们将配置写到了/opt/redis/redis.conf
      中,那么只需要执行如下命令即可启动Redis:

      # redis-server /opt/redis/redis.conf

  5. Redis的基础配置

    配置名 配置说明
    port 端口
    logfile 日志文件
    dir Redis工作目录(存放持久化文件和日志文件)
    daemonize 是否已守护线程的方式启动Redis
  6. Redis命令行客户端

    redis-cli可以使用两种方式连接Redis服务器

    • 交互式方式:通过redis-cli -h {host} -p {port}的方式连接到Redis服
      务,之后所有的操作都是通过交互的方式实现,不需要在执行redis-cli了,例
      如:
    redis-cli -h 127.0.0.1- p 6379
    127.0.0.1:6379> set hello world
    OK
    127.0.0.1:6379> get hello
    "world"
    
    • 命令方式:用redis-cli -h {host} -p {port} {command} 就可以直接得
      到命令的返回结果你,例如:
    redis-cli -h 127.0.0.1 -p 6379 get hello
    "world"
    

    这里有两点要注意:1)如果没有-h参数,那么默认连接127.0.0.1;如果没有
    -p,那么默认6379端口,也即是说如果-h -p都没写就是连接127.0.0.1:6379
    这个Redis实例。2)redis-cli是学习Redis的重要工具

  7. 停止Redis服务

    Redis提供了shutdown命令来停止Redis服务,例如要停掉127.0.0.1上6379端
    口上的Redis服务,可以执行如下操作。

    $ redis-cli shutdown

    可以见到Redis的日志输出如下:

    # User requested shutdown...    #客户端发出的shutdown命令
    * Saving the final RDB snapshot before exiting.
    # 保存RDB持久化文件(RDB是Redis的一种持久化方式)
    * DB saved on disk              #将RDB文件保存在磁盘上
    # Redis is now ready to exit, bye bye...    #关闭
    

    当使用redis-cli再次连接该Redis服务时,看到Redis已经 “失联”。

    $ redis-cli
    Could not connect to Redis at 127.0.0.1:6379: Connection refused
    

    这里有三点需要注意一下:

    • Redis关闭的过程:断开与客户端的连接、持久化文件生成,是一种相对优雅
      的关闭方式。
    • 除了可以通过shutdown命令关闭Redis服务以外,还可以通过kill进程号的
      方式关闭掉Redis,但是不要粗暴的使用kill -9强制杀死Redis进程,不但不
      会做持久化操作,还会造成缓冲区等资源不能被优雅关闭,极端情况会造成AOF
      和复制丢失数据的情况。
    • shutdown还有一个参数,代表是否在关闭Redis前,生成持久化文件:
      redis-cli shutdown nosave|save
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容