梁恒嘉的技术专栏 全栈之路

Redis基础知识

2022-09-23
NanKe

记录Redis基础知识,主要包括Redis简单介绍,Redis在Linux系统中的安装,Redis各种数据类型的操作以及应用,Redis中数据有效时间设置

正文内容:

一、Redis是什么

Redis是非关系型数据库(数据与数据之间不存在关系),与之对应的还有关系型数据库MySQL(数据库以表为单位,数据库表与表之间存在某种关联关系)

笔者认为Redis是为了缓解关系型数据库频繁操作数据库(消耗计算机资源)而存在的缓存中间件

具有易扩展,高性能,灵活的数据模型特点

二、Redis的安装

使用命令gcc -v检查 gcc 版本

Redis6 以上版本要求 gcc 必须在 5.3 以上

如果不能满足需求,升级 gcc,步骤如下:

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

需要注意的是 scl 命令启用只是临时的,退出 shell 或重启就会恢复原系统 gcc 版本

如果要长期使用 gcc 9.3 的话执行下面命令 echo -e "\nsource /opt/rh/devtoolset-9/enable" >>/etc/profile

如果已经安装 gcc,版本满足要求,跳过上面升级步骤

如果没有安装 gcc,安装步骤:

dnf group install "Development Tools" dnf install man-page

使用命令cd redis-6.0.8进入Redis源码目录

使用命令make进行预编译

使用命令mkdir -p /usr/local/redis创建文件

使用命令make install PREFIX=/usr/local/redis安装到指定目录

使用命令cd /usr/local/redis/bin进入安装文件 bin 目录

使用命令./redis-server 启动服务,之后看见如图所示则证明安装成功

此时按Ctrl+c退出这个界面,配置redis设置

redis

使用命令cp /usr/local/redis-6.0.8/redis.conf /usr/local/redis/bin/从redis源码目录复制 redis.conf 到 redis 的安装目录

使用命令vim /usr/local/redis/bin/redis.conf修改 redis.conf 文件

后台运行:daemonize no 改为 daemonize yes

设置密码:requirepass 你的密码

文件内查找:你搜索的内容 回车 n 下一个 N 上一个

注释绑定的 ip,默认只能本机访问,这样就可以远程访问

远程访问

使用命令cd /usr/local/redis/bin/进入到到 redis 的安装目录

使用命令./redis-server redis.conf启动Redis

使用命令ps -ef | grep redis查看 Redis 运行状态

使用命令./redis-cli进入客户端模式

输入密码

auth 密码

测试

ping

退出客户端模式

exit

ctrl+c 退出客户端模式

三、Redis各种数据类型的应用

Redis里面数据存储是键值对类型,在键值对中的位置处可以是String类型,hash类型,set类型,list类型,zset类型

  • String类型的应用:计数器,web集群session共享

计数器:将数据设置为数字,然后配合Redis里面的操作命令即可实现计数器 计数器具体的实现如下图所示:

在这里插入图片描述

具体场景:使用Redis设置新闻阅读量

set news:8571 :设置新闻ID为8571的阅读量为0

incr news:8571:新闻ID为8571的阅读量加1

get news:8571:获取新闻ID为8571的阅读量

decr news:8571:新闻ID为8571的阅读量减1

  • 哈希类型:适合存储对象,对属性的修改 具体的哈希类型命令操作如下图所示:

    在这里插入图片描述

    hset user 1:name simon:设置一个哈希类型数据user,并添加user的属性1:name值为simon

    hget user 1:name:获取哈希对象user的1:name属性值

    hmset user 2:name jack 2:age 22 1:age 22:设置哈希对象user的多个属性以及属性值

    hgetall user:获取哈希对象user的所有属性以及属性值

  • list类型:可以实现队列和栈数据结构

    在这里插入图片描述

    lpush news 20:在整个数据列表的最左边添加news,值是20

    rpush news 22:在整个数据列表的最右边添加news,值是22

    lrange news 0 5:查看下标在0到5的列表数据

    lpop news:从整个数据列表的最左边删除一个数据

    rpop news:从整个数据列表的最右边删除一个数据

  • set类型:

    在这里插入图片描述

    sadd name simon:添加name对象,其中name对象有个成员simon

    srem name jack:删除name对象中成员jack

    scard name:查看name对象的成员数量

    smembers name:查看name对象的所有成员值

  • zset类型:在set数据类型基础上可以根据添加的数值进行排序

    在这里插入图片描述

    在这里插入图片描述

    zadd newsSum 10 simon:设置newsSum对象的排序值是10,成员值是simon,在这里,Redis会根据这个排序值进行数据升序排序

    zrem newsSum 1 5:删除newsSum中成员值是1和5的成员

    zscore newsSum simon:查看simon的排序值

    zincrby newsSum 10 simon:吧simon的排序值增加10

    zrange newsSum 0 5:查看newsSum中下标在0到5的成员

  • 设置key的过期时间,具体操作如图所示:

    在这里插入图片描述

    expire name 100:设置name的过期时间是100秒

    ttl name:查看name的过期时间,单位是秒

    pttl name:查看name的过期时间,单位是毫秒


 

Content