Redis

作者: h2coder | 来源:发表于2022-12-18 18:05 被阅读0次

    前言

    Redis官网:https://redis.io

    Redis是一款非关系型数据库(NOSQL, not only sql),Redis存储的数据是在内存中的

    特点:可以快速读取到数据,因为存储的数据是在内存中的。Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件

    • 基于内存存储,读写性能高
    • 适合存储热点数据(热点商品、资讯、新闻),一般数据一般变化频率比较低,或者是高并发请求数据

    使用Redis能做什么

    • 数据缓存
    • 消息队列
    • 注册中心
    • 发布订阅

    下载与安装

    下载

    Redis安装包分为windows版和Linux版,例如我下载的是Linux的4.0.0版本,文件名为redis-4.0.0.tar.gz

    将安装包,使用FinlShell或其他客户端,上传到Linux的根目录下的/soft目录

    安装

    • 解压安装包

    解压安装包到/usr/local目录,解压后,会生成一个redis-4.0.0目录,后续将在这个目录进行编译和安装

    # 切换到soft目录
    cd /soft
    # 解压安装包
    tar -zxvf redis-4.0.0.tar.gz -C /usr/local
    
    • 安装gcc编译器

    由于Redis依赖gcc,所以需要先安装gcc

    yum install gcc-c++
    
    • 编译和安装

    切换目录到/usr/local/redis-4.0.0,执行编译和安装

    # 切换目录
    cd /usr/local/redis-4.0.0
    # 编译和安装
    make && make install
    

    安装完毕,src目录就会出现2个命令,redis-serverredis-cli,分别是启动Redis服务和进入Redis客户端命令行

    配置Redis

    配置Redis后台启动

    /usr/local/redis-4.0.0目录下的redis.conf配置文件,拷贝到src文件下

    # 进入src目录
    cd src
    
    # 将上层目录的redis.conf拷贝到当前目录
    cp ../redis.conf .
    # 或
    cp /usr/local/redis-4.0.0/redis.conf .
    

    修改src目录下,redis.conf文件,修改daemonize的值为yes,默认为no,就是前台启动(霸屏启动,无法进行其他操作)

    # 编辑配置文件
    vim redis.conf
    
    # 编辑文件 将 daemonize  no 修改为 daemonize  yes
    daemonize  yes
    
    • 重新启动Redis

    redis-server命令后,跟上配置文件的地址,就会以该配置文件进行启动

    ./redis-server redis.conf
    
    • 查看端口占用

    使用如下命令,就可以查看端口占用情况,能看到6379被Redis占用,就为启动成功

    netstat -ntlp
    

    配置Redis密码

    • Redis默认是没有密码的,如果需要配置密码,则需要修改redis.conf配置文件,添加一个配置
    # root为设置的密码,自行修改
    requirepass root
    
    • 设置密码后,Redis客户端就需要使用密码进行登录
    # -h host 设置访问的服务器ip地址,如果本机不用写
    # -p port 设置访问端口,redis服务器的端口6379,如果端口没有改过,这个参数可以不用设置
    # -a 如果服务器设置了密码访问,就需要指定这个参数
    ./redis-cli  -h 127.0.0.1   -p 端口号  -a 密码
    

    配置Redis允许远程访问

    • 默认Redis只允许本机访问,如果需要远程访问,也是需要修改redis.conf配置文件。搜索bind关键字,在bind 127.0.0.1后,空格,添加上当前linux的ip地址
    # 编辑配置文件
    vim redis.conf
    
    # 编辑内容,将 "bind 127.0.0.1" 修改为 "bind 127.0.0.1 当前Linux的ip地址"
    bind 127.0.0.1 192.168.208.128
    
    • 重启Redis服务,让配置生效
    # 发送关闭redis服务器命令,如果redis服务没有启动这步可以忽略
    ./redis-cli shutdown
    # 再次启动服务器
    ./redis-server redis.conf
    
    • 防火墙开放6379端口
    # 开放端口
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    # 重载防火墙
    firewall-cmd --reload
    # 查看开放的防火墙端口列表
    firewall-cmd --list-ports
    

    Redis数据类型

    Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型

    • 字符串 string:普通字符串,常用
    • 哈希 hash:适合存储对象
    • 列表 list:按照插入顺序排序,可以有重复元素
    • 集合 set:无序集合,没有重复元素
    • 有序集合 sorted set / zset:集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素
    image-20220213112135501.png image-20210927111819871.png

    Redis常用命令

    更多命令可以参考

    字符串string操作命令

    注意:每个value限制了512MB大小

    • SET key value 设置指定key的值
    • GET key 获取指定key的值
    • SETEX key seconds value 设置指定key的值,并将 key 的过期时间设为 seconds 秒
    • SETNX key value 只有在 key 不存在时设置 key 的值
    • del key1 key2 删除指定的key数据
    • ttl key 返回给定 key 的剩余生存时间(TTL, time to live),以秒为单位
      • 返回值为>=0 代表剩余存活时间
      • 返回值为 -2 代表过期已删除
      • 返回值为 -1 代表没有过期时间,永远存活
    1637765702570.png

    哈希hash操作命令

    Redis hash 是一个string类型的 field 和 value 的映射表,hash特别适合用于存储对象

    注意:hash里面包含的键值对个数有限制,限制42亿以内

    • HSET key field value 将哈希表 key 中的字段 field 的值设为 value
    • HGET key field 获取存储在哈希表中指定字段的值
    • HDEL key field 删除存储在哈希表中的指定字段
    • HKEYS key 获取哈希表中所有字段
    • HVALS key 获取哈希表中所有值
    • HGETALL key 获取在哈希表中指定 key 的所有字段和值
    image-20210927113014567.png 1637765894439.png

    列表list操作命令

    Redis 列表是简单的字符串列表,按照插入顺序排序,类似于java中的linkedList(双向链表),value的个数限制42亿个以内

    应用场景:队列(数据,根据插入顺序排序),堆栈的实现(先进先出、先进后出)。这里排序不是实时的,而是插入后顺序就固定了。

    例如:过去时的排行榜,昨日金曲排行榜

    • LPUSH key value1 [value2] Left, 将一个或多个值插入到列表头部(左部), rpush是从尾部插入
    • LRANGE key start stop 获取列表指定范围内的元素
    • RPOP key 移除并获取列表最后一个元素 lpop从左侧头部删除一个元素
    • LLEN key 获取列表长度
    • BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素,如果列表没有元素,就会阻塞列表直到等待超时或发现可弹出元素为止,超时时间单位为秒
    image-20220320163016707.png 1637794007133.png

    集合set操作命令

    Redis set 是string类型的无序集合。集合成员是唯一的,这就意味着集合中==不能出现重复的数据==,常用命令:

    • SADD key member1 [member2] 向集合添加一个或多个成员
    • SMEMBERS key 返回集合中的所有成员
    • SCARD key 获取集合的成员数
    • SINTER key1 [key2] 返回给定所有集合的交集
    • SUNION key1 [key2] 返回所有给定集合的并集
    • SDIFF key1 [key2] 返回给定所有集合的差集, 含义是key1有哪个元素在key2中不存在
    • SREM key member1 [member2] 移除集合中一个或多个成员
    image-20210927113632472.png 1637796946224.png

    有序集合sorted set操作命令

    Redis sorted set 有序集合是 string 类型元素的集合,且不允许重复的成员。每个元素都会关联一个double类型的分数(score)

    Redis正是通过分数来为集合中的成员进行从小到大排序。有序集合的成员是唯一的,但分数却可以重复

    • ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的 分数
    • ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间内升序排序的成员,zrevrange为降序查询
    • ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
    • ZREM key member [member ...] 移除有序集合中的一个或多个成员
    image-20210927114003383.png 1657092127790.png

    通用命令

    Redis中的通用命令,主要是针对key进行操作的相关命令:

    • KEYS pattern 查找所有符合给定模式( pattern)的 key
      • * 代表任意0~多个字符
      • ? 代表任意1个字符
    • EXISTS key 检查给定 key 是否存在
    • TYPE key 返回 key 所储存的值的类型
    • TTL key 返回给定 key 的剩余生存时间(TTL, time to live),以秒为单位
      • 返回值为 >=0 代表剩余存活时间
      • 返回值为 -2 代表过期已删除
      • 返回值为 -1 代表没有过期时间,永远存活
    • DEL key 该命令用于在 key 存在是删除 key
    • select 数字,切换数据库操作的命令,Redis服务器上一共有16个数据库db0,db1,...db15, 如果不指定默认操作数据在db0的数据库上(数字范围:0~15)

    相关文章

      网友评论

          本文标题:Redis

          本文链接:https://www.haomeiwen.com/subject/fjlsqdtx.html