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