Redis之快速入门

[复制链接]
发表于 2026-2-2 22:51:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次

简介
什么是Redis
特点
上风
数据库对比
应用场景
安装与设置
下载
上传解压
安装gcc
编译
检察安装目次
后端启动
测试
体系服务设置
Redis数据范例
通过下令操纵Redis
String(字符串)
Hash(哈希)
List(列表)
Set(聚集)


简介

什么是Redis

        Redis 全称 Remote Dictionary Server(即远程字典服务),它是一个基于内存实现的键值型非关系(NoSQL)数据库,由意大利人 Salvatore Sanfilippo 利用 C 语言编写。
   NoSQL = Not Only SQL 不但仅是SQL,非关系型数据库
          Redis 服从 BSD 协议,实现了免费开源,其最新版本是 7.0+,常用版本包罗 3.0 、4.0、5.0、6.0。自 Redis 诞生以来,它以其超高的性能、完满的文档和轻便易懂的源码广受好评,国表里许多大型互联网公司都在利用 Redis,比如腾讯、阿里、Twitter、Github 等等。
   提示:Redis官网(Redis - The Real-time Data Platform)提供了完满的社区环境、文档阐明,以及更新支持。
          常见的内存型数据库,除 Redis 之外,另有 Oracle Berkeley DB(甲骨文旗下的一款产物)、SQlite(轻量级内存数据库)、Memcache(键值型分布式缓存数据库)、Altibase(基于内存的高性能数据库)。
特点

   

  • Redis 不但可以将数据完全生存在内存中,还可以通过磁盘实现数据的长期存储;
  • Redis 支持丰富的数据范例,包罗 string、list、set、zset、hash 等多种数据范例,因此它也被称为“数据结构服务器”;
  • Redis 支持主从同步,即 master-slave 主从复制模式。数据可以从主服务器向恣意数目的从服务器上同步,有效地包管数据的安全性;
  • Redis 支持多种编程语言,包罗 C、C++、Python、Java、PHP、Ruby、Lua 等语言。
        与 SQL 型数据库截然差别,Redis 没有提供新建数据库的操纵,由于它自带了 16 (0—15)个数据库(默认利用 0 库)。在同一个库中,key 是唯一存在的、不答应重复的,它就像一把“密钥”,只能打开一把“锁”。键值存储的本质就是利用 key 来标识 value,当想要检索 value 时,必须利用与 value 相对应的 key 举行查找。
        Redis 数据库没有“表”的概念,它通过差别的数据范例来实现存储数据的需求,差别的数据范例可以大概顺应差别的应用场景,从而满意开发者的需求。
单线程的Redis为什么这么快呢?
        Redis 的底层是一个单线程模子,单线程指的是利用一个线程来处置处罚全部的网络变乱哀求,如许就克制了多进程大概多线程切换导致的 CPU 斲丧,而且也不消思量各种锁的题目。固然是单线程,但可以开多实例补充
        Redis 为了充实利用单线程,加快服务器的处置处罚速率,它采取 IO 多路复用模子来处置处罚客户端与服务端的毗连,这种模子有三种实现方式,分别是 select、poll、epoll。Redis 正是采取 epoll 的方式来监控监控多个 IO 变乱。当客户端空闲时,线程处于壅闭状态;当一个或多个 IO 变乱触发时(客户端发起网路毗连哀求),线程就会从壅闭状态唤醒,并同时利用epoll来轮询触发变乱,并依次提交给线程处置处罚。
   注意:“多路”指的是多个网络毗连,“复用”指的是复用同一个线程。多路 IO 复用技能可以让单个线程高效的处置处罚多个毗连哀求。
  
上风

   

  • 性能极高:Redis 基于内存实现数据存储,它的读取速率是 110000次/s,写速率是 81000次/s;
  • 多用途工具: Redis 有许多的用途,比如可以用作缓存、消息队列、搭建 Redis 集群等;
  • 下令提示功能:Redis 客户端拥有强大的下令提示功能,利用起来非常的方便,低沉了学习门槛;
  • 可移植性:Redis 利用用尺度 C语言编写的,可以大概在大多数操纵体系上运行,比如 Linux,Mac,Solaris 等。

数据库对比

        Redis 用来缓存一些经常被访问的热门数据、大概必要泯灭大量资源的内容,通过把这些内容放到 Redis 中,可以让应用步伐快速地读取它们。比方,网站的首页必要经常被访问,而且在创建首页的过程中会斲丧较多的资源,此时就可以利用 Redis 将整个首页缓存起来,从而低沉网站的压力,淘汰页面访问的耽误时间。
        我们知道,数据库的存储方式大要可分为两大类,基于磁盘存储和基于内存存储。磁盘存储的数据库,由于磁头呆板运动以及体系调用等因素导致读写服从较低。Redis 基于内存来实现数据存取,相对于磁盘来说,其读写速率要高出好几个数目级。下表将 Redis 数据库与其他常用数据库做了简单对比:
名称范例数据存储选项附加功能Redis基于内存存储的键值非关系型数据库字符串、列表、散列、有序聚集、无序聚集发布与订阅、主从复制、长期化存储等Memcached基于内存存储的键值缓存型数据库键值之间的映射为提拔性能构建了多线程服务器MySQL基于磁盘的关系型数据库每个数据库可以包罗多个表,每个表可以包罗多条记载; 支持第三方扩展。支持 ACID 性子、主从复制和主主复制MongoDB基于磁盘存储的非关系文档型数据库每个数据库可以包罗多个聚集,每个聚集可以插入多个文档支持聚合操纵、主从复制、分片和空间索引        Redis 基于内存来实现数据的存储,因此其速率非常快。但是我们知道,盘算机的内存好坏常贵重的资源,以是 Redis 不恰当存储较大的文件大概二进制数据,否则会出现错误,Redis 恰当存储较小的文本信息。理论上 Redis 的每个 key、value 的巨细不高出 512 MB。
   总得来说,上述数据库各有上风,当我们选用数据库时,也要因地制宜,选择一款与业务场景最符合合的数据库。
  
应用场景

   

  • 缓存:公道的利用 缓存 可以大概显着加快访问的速率,同时低沉数据源的压力。这也是 Redis 最常用的功能。Redis 提供了 键值逾期时间(EXPIRE key seconds)设置,而且也提供了机动控制 最大内存 和 内存溢出 后的 镌汰战略。
  • 排行榜:每个网站都有自己的排行榜,比方按照 热度排名 的排行榜,发布时间 的排行榜,答题排行榜 等等。Redis 提供了 列表(list)和 有序聚集(zset)数据结构,公道的利用这些数据结构,可以很方便的构建各种排行榜体系。
  • 计数器:计数器在网站应用中非常紧张。比方:点赞数加 1,欣赏数 加 1。另有常用的 限流操纵,限定每个用户每秒 访问体系的次数 等等。Redis 支持 计数功能(INCR key),而且计数的 性能 也非常好,计数的同时也可以设置 超时时间,如许就可以实现限流。
  • 交际网络:赞/踩,粉丝,共同挚友/喜好,推送,下拉革新等是交际网站必备的功能。由于交际网站 访问量通常比力大,而且传统的数据库 不太恰当生存这类数据,Redis 提供的 数据结构 可以相对比力容易实现这些功能。
  • 消息队列:Redis 提供的 发布订阅(PUB/SUB)和壅闭队列 的功能,固然和专业的消息队列(RocketMQ/RabbitMQ,MQ全称:Message Queue)比,还不敷强大,但对于一样寻常的消息队列功能根本满意。

安装与设置

下载

进入redis官网下载对应版本的Redis服务,这里利用的是redis-6.2.1。

上传解压

将下载的redis-6.2.1.tar.gz压缩包上传至服务器。
  
  1. # 切换目录
  2. cd /usr/local/mytools
  3. # 上传
  4. rz  redis-6.2.1.tar.gz
  5. # 解压
  6. tar -zxf redis-6.2.1.tar.gz -C /usr/local
复制代码

安装gcc

  
  1. yum -y install gcc
复制代码

编译

将当前目次改为: /usr/local/redis
  
  1. make && make install
复制代码
 

检察安装目次
  
  1. cd /usr/local/bin
复制代码

目次先容:
   

  • redis-benchmark:性能测试工具,可以在自己本子答应,看看自己本子性能怎样
  • redis-check-aof:修复有题目的AOF文件
  • redis-check-dump:修复有题目的dump.rdb文件
  • redis-sentinel:redis集群利用
  • redis-server:redis服务器启动下令
  • redis-cli:客户端,操纵入口

后端启动

利用vi大概vim下令修改/usr/local/redis-6.2.1/redis.conf中的设置,将背景启动设置daemonize改为yes,如下:
  
  1. daemonize yes
复制代码
启动redis
  
  1. redis-server /usr/local/redis-6.2.1/redis.conf
复制代码
检察进程
  
  1. ps -ef | grep redis
复制代码
 

关闭redis服务
  
  1. # 方式一:
  2. kill -9 pid
  3. # 方式二:
  4. redis-cli shutdown
复制代码
测试

实行 redis-cli 即可进入redis下令窗口,然后就可以实行redis下令了。
  
  1. [root@localhost bin]# redis-cli
  2. 127.0.0.1:6379> ping
  3. PONG
  4. 127.0.0.1:6379> exit
复制代码

体系服务设置

  
  1. # 切换到指定目录
  2. cd /usr/lib/systemd/system/
  3. # 上传redis.service服务文件
  4. rz redis.service
复制代码
修改redis.service设置:
  
  1. [Unit]
  2. Description=Redis
  3. After=syslog.target network.target remote-fs.target nss-lookup.target
  4. ​
  5. [Service]
  6. Type=forking
  7. #修改redis-server和redis.conf的路径
  8. ExecStart=/lky/redis-5.0.0/src/redis-server /lky/redis-5.0.0/redis.conf
  9. ExecReload=/bin/kill -s HUP $MAINPID
  10. ExecStop=/bin/kill -s QUIT $MAINPID
  11. PrivateTmp=true
  12. ​
  13. [Install]
  14. WantedBy=multi-user.target
复制代码
重载、自启动及启停服务
  
  1. # 重载服务
  2. systemctl daemon-reload
  3. # 自启动服务
  4. systemctl enable redis
  5. # 禁用自启动服务
  6. systemctl disable redis
  7. # 启动服务
  8. systemctl start redis
  9. # 停止服务
  10. systemctl stop redis
  11. # 重启服务
  12. systemctl restart redis
复制代码

Redis数据范例

Redis默认端口6379,默认16个数据库,雷同数组的下标从0开始,初始默认利用0号。可利用select下令切换数据库:
  
  1. <strong>select index</strong>
复制代码


  • String(字符串)
        String 是 Redis 最根本的数据范例。字符串是一组字节,在 Redis 数据库中,字符串具有二进制安全(binary safe)特性,这意味着它的长度是已知的,不由任何其他停止字符决定的,一个字符串范例的值最多可以大概存储 512 MB 的内容。


  • Hash(哈希表)
        Redis hash是一个键值对聚集。Redis hash是一个string范例的field和value的映射表,hash特殊适实用于存储对象。雷同于java内里的Map<String,Object>


  • List(列表)
        Redis List 中的元素是字符串范例,此中的元素按照插入序次举行分列,答应重复插入,最多可插入的元素个数为 2^32 -1 个(约莫40亿个),可以添加一个元素到列表的头部(左边)大概尾部(右边)。


  • Set(聚集)
        Redis Set 是一个字符串范例元素构成的无序聚集。在 Redis 中,聚集是通过哈希映射表实现的,以是无论是添加元素、删除元素,亦或是查找元素,它们的时间复杂度都为 O(1)。


  • Zset(有序聚集)
        Redis zset 是一个字符串范例元素构成的有序聚集,聚会合的元素不但具有唯一性,而且每个元素还会关联一 个 double 范例的分数,该分数答应重复。Redis 正是通过这个分数来为聚会合的成员排序。
通过下令操纵Redis

String(字符串)

  
  1. set key          #保存
  2. get key          #获取
  3. ​
  4. type key         #查看类型
  5. keys *或keys key #查看所有或者指定的key
复制代码
Hash(哈希)

  
  1. hset key field1 value1 [field2 value2]  #同时将多个field-value设置到哈希表key中
  2. hget key field                          #获取指定的字段值
  3. hdel key field                          #删除指定的字段值
  4. hgetall key                             #查询指定key的所有字段
  5. hexists key field                       #查询指定key中的字段是否存在
  6. hlen key                                #获取指定key中的长度
复制代码
List(列表)

  
  1. lpush key value1 value2 value3          #将一个或多个值插入到列表头部
  2. llen key                                #获取列表的长度
  3. lindex key index                        #根据索引获取列表中的元素
  4. lrange key start stop                    #查看指定范围内的元素
复制代码

Set(聚集)

  
  1. sadd key value1 [value2]                #向集合添加一个或多个元素
  2. scard key                               #获取集合中的元素数量
  3. sscan key cursor [MATCH pattern] [COUNT count]   #迭代集合中的元素
  4. exists key                              #是否存在
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表