最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

明解Redis(一)概述

来源:博客园

一、Redis简介

Redis全称为 Remote Dictionary Server(远程词典服务),开源(BSD许可)的,使用 C 语言开发的。

Redis是内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。


(相关资料图)

支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。

内置了复制,LUA脚本,LRU驱动事件,事务和不同级别的磁盘持久化,并通过Redis哨兵和自动分区提供高可用性。

1、Redis背景

Redis的开发作者是一名意大利的程序员,名字为Salvatore Sanfilippo(网名:antirez)

Salvatore 最初创建 Redis 是为了扩展实时日志分析工具LLOOGG ;早先LLOOGG是基于MySQL的,MySQL的数据是存在磁盘的,存在I/O性能瓶颈,这促使Salvatore编写一个内存型数据库。

让基本的 Redis 服务器运行之后,他决定与其他人分享这项工作,在2009年将Redis正式开源。

2、Redis特性

  • 速度快、性能高

    • 基于内存
    • 命令执行单线程,避免了不必要的上下文切换及竞争条件
    • key-value 存储,底层数据结构加持
    • IO多路复用
    • 多线程 IO 模型
    • 支持 Pipelining 命令,可一次发送多条命令来提高吞吐率,减少通信延迟
  • 原子操作

  • 丰富的数据结构,针对value的

    • String(字符串)
    • List(链表)
    • Set(集合)
    • Zset(sorted set --有序集合)
    • Hash(哈希类型)
    • Bitmaps:一般用于大数据量的二值性统计,比如签到、打卡
    • HyperLogLog:用于对数据量超级庞大的日志做去重统计
    • Geospatial:地理空间,其主要用于地理位置相关的计算
    • Stream:可实现简单的消息中间件的功能(publish/subscribe)
  • 提供了众多个性化功能

    • 慢查询分析
    • 性能测试
    • Pipeline
    • 简单事务
    • Lua脚本扩展
    • 发布/订阅
  • 持久化

  • 主从复制

  • 高可用、分布式集群

  • 客户端语言广泛

3、Redis网站

官方文档:https://redis.io/

中文参考:

  • https://www.redis.com.cn/
  • http://www.redis.cn/

作者博客:http://antirez.com/latest/0

二、Redis安装

前置环境:gcc编译器

yum -y install gcc automake autoconf libtool make

官网步骤:https://redis.io/docs/getting-started/installation/

下载地址:https://redis.io/download/

Redis是C语言开发的,需要进行安装,安装方式在README.MD中即可找到!

wget https://download.redis.io/releases/redis-7.0.4.tar.gztar xzf redis-7.0.4.tar.gzcd redis-7.0.4/# 编译,make会找本目录下的MakeFile文件,成功后src下会生成可执行文件make# 安装到指定目录之后,可以看到对应的目录下只有执行文件,就不和源码混在一起make install PREFIX=/opt/redis7

Redis编译安装完成之后,会生成几个可执行文件,分别具有不同的作用,我们现在先简单了解下,之后我们陆续会进行介绍!

Redis编译安装完成之后,我们还可以对其配置一个环境变量,以后启动Redis就会变得较为方便一些!

# 配置环境变量vi /etc/profileexport REDIS_HOME=/opt/redis7export PATH=$PATH:$REDIS_HOME/bin# 刷新环境变量source /etc/profile#查看环境变量echo $PATH

Redis官方并没有提供支持Windows环境下的安装包,生产环境下基本也都是Linux服务器为主!

官方虽然没有提供Windows版本的Redis,但是有一些爱搞事情的开发者对其做了维护!

Windows环境下安装:https://github.com/zkteco-home/redis-windows

三、启动服务

1、默认前台启动

在任意目录执行 redis-server命令即可启动 Redis,但是这种启动方式会阻塞当前命令行窗口!

再开一个窗口查看Redis进程:ps -ef | grep redis

通过 Ctrl + C可以停止 Redis!

2、命令式后台启动

使用 nohub 命令,末尾再添加一个&符,可以使要启动的程序在后台以守护进程方式运行。

这样的好处是,进程启动后不会占用一个会话窗口,且其还会在当前目录,即运行启动命令的当前目录中创建一个 nohup.out 文件用于记录 Redis 的操作日志。

停止Redis服务

redis-cli shutdown

3、配置式后台启动

1)修改Redis编译安装目录下的redis.conf配置文件,最好先复制一份!

2)修改配置

3)启动Redis

4、配置Linux服务启动

我们还可以将Redis配置成一个对应的服务,只需要执行Redis源码目录下的utils下 install_server.sh脚本即可!

如果执行的时候有报如下的错误:

这时候我们只需要将脚本文件打开,将里面报错的文本内容注释掉即可!

这时候我们再次执行 install_server.sh脚本,即可看到以下的界面:

这里我们先选择默认端口,也可以自己进行端口配置!

一个物理机可以有多个Redis进程,通过端口号进行区分!

可执行程序就一份,但内存中如果存在多个实例需要有各自的配置文件、持久化目录等资源

查看服务状态:service redis_6379 status

关闭/启动Redis服务:service redis_6379 stop/start

查看Redis进程:ps -ef | grep redis

四、Redis客户端

1、本地命令行工具访问

本地命令行客户端的工具为 redis-cli

基本格式:redis-cli -h (host}-p {port}

  • -h:指定要连接的 Redis 服务器的 IP
  • -p:指定要连接的 Redis 的端口号

若连接的是本机 Redis,且端口号没有改变,保持默认的 6379,则-h 与-p 选项可以省略掉!

#在这种状态下,会把get获取的16进制xshell的编码显示;比如显示“中”,而不是16进制redis-cli --raw

设置密码

Redis可以设置访问密码,可以对用户进行身份验证。没有密码的用户可以登录 Redis,但无法访问!

访问密码的设置位置在 redis.conf 配置文件中。默认是被注释掉的,没有密码。

没有进行密码验证的用户,无法对Redis进行读、写!

对于密码的使用,有两种方式:

  1. 登录时未使用密码,则访问时先输入密码;
  1. 登录时直接使用密码登录,访问时无需再输入密码!

2、远程图形化工具访问

  • Redis Desktop Manager:https://resp.app/(原来是 http://redisdesktop.com)
  • AnotherRedisDeskTopManager:https://gitee.com/qishibo/AnotherRedisDesktopManager/releases
  • Redis Insight:https://redis.com/redis-enterprise/redis-insight/
  • RedisPlus:https://gitee.com/MaxBill/RedisPlus

前置配置

远程客户端连接之前我们要针对做一些配置,使远程主机上的客户端能够连接并访问到服务端的 Redis。

  • IP绑定

还可以配置成bind 0.0.0.0 表示可以和所有的IP进行绑定!

  • 关闭保护模式

默认开启保护模式,其只允许本机的客户端访问。但生产中应该关闭,以确保其它客户端可以连接 Redis。

关键词: