• 初始Redis(入门篇)


    目录

    什么是Redis

    Redis特性

    速度快

    丰富的功能

    客户端语言多

    持久化

    主从复制

    Redis可以做什么

    缓存

    排行榜系统

    计数器应用

    消息队列系统

    Redis安装

    centos7安装

    Redis重要文件

    Redis的使用

    Redis通用命令

    set   get

    keys

     exists

    del

    expire


    什么是Redis

    Redis是⼀种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis
    中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满⾜很多的应⽤场景,⽽且因为Redis会将所有数据都存放再内存中,所以它的读写性能⾮常惊⼈。不仅如此,Redis还可以将内存的数据利⽤快照和⽇志的形式保存到硬盘上,这样在发⽣类似断电或者机器故障的时候,内存中的数据不会“丢失”。除了上述功能以外,Redis还提供了键过期、发布订阅、事务、流⽔线、Lua脚本等附加功能。总之,如果在合适的场景使⽤Redis,它就会像⼀把瑞⼠军⼑⼀样所向披靡。

    Redis特性

    速度快

    正常情况下,Redis的速度是非常快的,官方给出的速度是10万/秒,当前也是取决于机器的性能,这里不考虑机器的性能,我们只是分析一下是什么造就了Redis拥有如此快的速度.

    1. 高效的数据结构 redis使用动态字符串,哈希表,List集合,双向链表,压缩列表,和跳跃表等数据机构来实现数据存储,这样能将数据高效的存储和读取出来.

    2. 基于内存的操作, redis所有的操作都是基于内存的,并且大多数操作都是简单的存储和获取,而存取的大部分操作都消耗在I\O上,而I\O操作最快的就是内存了.

    3. 多路I\O复用模型, 多路指的是多个网络连接,复用指的是复用一个线程,这使得redis在单线程的基础上处理多个并发请求.多路复用内部采用epoll代理来实现,epoll会同时监测多个流的I\O事件,当没有事件时,就会阻塞.

    4. 单线程执行,单线程执行可以避免因为多个线程过度的抢占和调度而产生的时间.

    丰富的功能

    除了5中基本的数据结构,Redis还提供了很多的额外的功能.

    1. 提供了键过期功能,用于实现缓存

    2. 提供了发布订阅功能,用于使用消息系统

    3. 提供了lua脚本功能,可以使用lua创造出新的Redis命令

    4. 提供了事务管理功能,能在一定程度上保证事务特性

    客户端语言多

    Redis提供了简单的TCP协议,很多编程语言都可以轻松的接入Redis,,所以支持Redis客户端的语言也非常多,包括C、C++、Java、PHP、Python、NodeJS等.

    持久化

    因为Redis的数据是存储在内存中的,所以要是发生断电等极端情况,数据就会丢失,但是对于Redis来说,数据是不会丢失的,因为Redis提供了两种持久化功能:RDB,AOF,即可以使用这两种策略将内存的数据存储到硬盘中.这样就保持了数据了的持久化.

    主从复制

    Redis提供了复制功能,实现了多个数据的Redis副本.复制功能是分布式Redis的基础


    Redis可以做什么

    缓存

    缓存机制几乎在所有的大型网站都有运用,合理的使用缓存不仅可以提高数据访问的速度,而且能够有效的降低后端数据源的压力.

    一个合理的缓存设置能够为一个网站提供稳定的的使用体验.

    排行榜系统

    对于某些网站需要提供一个排行榜的功能,Redis提供了列表和有序集合的结构,能够轻松的实现排行榜功能.

    计数器应用

    计数器在⽹站中的作⽤⾄关重要,例如视频⽹站有播放数、电商⽹站有浏览数,为了保证数据的
    实时性,每⼀次播放和浏览都要做加1的操作,如果并发量很⼤对于传统关系型数据的性能是⼀种挑
    战。Redis天然⽀持计数功能⽽且计数的性能也⾮常好,可以说是计数器系统的重要选择。

    消息队列系统

    消息队列系统可以说是⼀个⼤型⽹站的必备基础组件,因为其具有业务解耦、⾮实时业务削峰等
    特性。Redis提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列⽐还不够⾜够强⼤,但是对于⼀般的消息队列功能基本可以满⾜

    Redis安装

    关于Redis的安装,我们将linux系统上进行安装.

    centos7安装

    使用yum安装

    yum install centos-release-scl-rh    # 安装scl源
    yum install rh-redis5-redis   #安装redis5

    执行上面的两条命令之后,Redis就成功的安装到了我们的centos7上了,接下来我们需要配置Redis.

    Redis默认的安装目录是在:/opt/rh/rh-redis5/root/usr/bin里面.

    针对可执行程序做符号链接: 

    我们由于这个路径太深了,我们可以设置一个符号连接,就类似windows中的快捷方式.

    cd /usr/bin    #进入usr/bin目录

    ## 将redis的可执行程序的符号链接放在当前目录下
    ln -s /opt/rh/rh-redis5/root/usr/bin/redis-server ./redis-server   
    ln -s /opt/rh/rh-redis5/root/usr/bin/redis-sentinel ./redis-sentinel
    ln -s /opt/rh/rh-redis5/root/usr/bin/redis-cli ./redis-cli

     针对配置文件做符号链接:

    cd /etc/
    ln -s /etc/opt/rh/rh-redis5/ ./redis

    然后我们就需要修改配置文件中的属性了.

     我们需要进入设置的符号链接的这个目录:

    cd redis/    
    vim redis.conf    # 打开配置文件

    修改配置文件:

    修改IP地址:bind 0.0.0.0

    关闭保护模式:protected-mode no

    启动守护进程:daemonize yes

    设置工作目录:dir /var/lib/redis

    设置日志目录:logfile /var/log/redis/redis-server.log


    修改完毕之后就保存退出即可.

    我们在配置文件中设置了工作目录和日志目录,所以我们需要将这两个目录创建出来.

    创建日志目录:mkdir -p /var/log/redis/

    创建工作目录:mkdir -p /var/lib/redis

    现在我们Redis的配置就全部完成了,接下来就可以启动了.

    redis-server /etc/redis/redis.conf   #启动redis

    停止redis:

    查找Redis的pid

    使用: kill -9 [redis进程号] 

    Redis重要文件

    redis-server是Redis服务器程序,开启Redis就是使用的这个文件。

    redis-cli是在我们学习阶段需要频繁⽤到的⼀个命令⾏客⼾端程序。

    /etc/redis.conf是Redis服务器的配置⽂件。

    /etc/redis-sentinel.conf是RedisSentinel的配置⽂件。

    redis-shutdown是⽤于停⽌Redis的专⽤脚本。
     

    Redis的使用

    Redis也是一个客户端服务器的程序,他的交互方式和MySQL没有区别.

    现在我们可以直接使用redis-cli命令来连接到redis.

    上述就是我们进入redis之后的终端.

    127.0.0.1是因为我们是本机登录,6379是redis的默认端口.

    Redis通用命令

    Redis有多种数据结构,但它们都是键值对种的值,对于键来说有⼀些通⽤的命令。接下来将介绍这些通用命令.

    set   get

    set keyname  value   给对应的key设置value

    实例:

    给world键设置值为123 

    get keyname    返回对应的键的value

    如果键不存在,则返回nil

     

    set和get命令是redis中使用最频繁的两个命令.他们的使用也非常简单.

    keys

    用来查询服务器上匹配的key

    keys命令是通过一些通配符来描述出key的大致摸样,匹配上的key就是被查找出来.

    匹配一个字符 ?

    匹配0个或者任意个字符  *

    [a,b,c] 只能匹配到中括号中的字符,别的不行

    [^ab] 配置中括号中的字符,别的都能匹配

     

    [a-e] 配置a-e这个区间的字符,包括两边字符

     

     exists

    判断某个key是否存在

    可以看到,如果存在,则返回1,如果不存在,则返回0

     

    可以看到,当有多个key的时候,返回的是key存在的个数 

    del

    删除指定的key

    成功删除返回1, 删除失败返回0

    当同时删除多个key的时候,返回的就是删除成功的个数. 

    expire

    为指定的key设置过期时间 以秒为单位

     这里的过期时间指的是,为这个key设置时间,当时间到了之后,那么Redis就会自动的删除这个key.

    在上图中,我们使用expire去给一个key设置了过期时间,再使用ttl查看这个key还剩余多少时间. 

     

    当时间到了之后,使用ttl命令就会发现返回一个-2,在去查找这个key,发现已经找不到了. 

    以上命令是Redis的全局命令,适用于Redis的所有数据结构.

  • 相关阅读:
    Rewrite the Stars
    基于HTTP构建YUM网络源
    vue:前端json数据 导出excel(Export2Excel)
    【云原生】镜像构建实战操作(Dockerfile)
    4种经典的限流算法与集群限流
    视觉SLAM十四讲:从理论到实践(Chapter5:相机与图像)
    每日学习03--List与ArrayList的区别以及Arraylist的方法
    html静态网站基于动漫主题网站网页设计与实现共计10个页面——二次元漫画
    java每日一练(4)
    MyBatis配置及单表操作
  • 原文地址:https://blog.csdn.net/qq_63525426/article/details/134705665