赞
踩
全称Remote Dictionary Server,即远程字典服务。Redis是一款基于内存的高速缓存运行的高性能键值存储系统,通过Key-Value来存储数据的开源数据库,可以用作数据库、缓存和消息中间件。本文中的一些名词解释,待从此博客中找出对应并补入。
Redis在【开发项目】中主要用来做缓存——Redis缓存的作用是把经常访问的【数据库中的数据】提取到Redis,①用户查询的时候,先去Redis查询,没有查到再去数据库执行sql语句查询,并同时把查询到的数据同步到Redis里面,Redis只做读操作②用户添加、删除数据的时候,先在Redis中进行操作,然后通过线程对数据库执行异步操作,来对应添加、删除数据库中的对应数据,以保持Redis与数据库中的一致——这是因为Redis基于内存,而内存中查询速度快,就像我们用 MySQL 做持久层数据一样 。通过【Redis+数据库(MySQL、Oracle)】的好处是:待补入此博客。
Redis由VMware主持开发,遵守 BSD 协议,使用C语言按照ANSI C标准进行开发的。此处先给出Redis的官网缓存是其最常应用的场景之一。Redis支持多数据库,Redis 默认情况下包含16个数据库,数据库名称是用数字0-15 来依次命名的。 多数据库相互独立,互不干扰。
BSD 协议:
ANSI C标准:
Redis相比于MySQL,可以存很多的数据,比如文档,图片、集合对象等等,而数据库只能存基础类型。
Redis能实现高并发、运行快,是因为:
Redis实例运行在单独的进程中,【应用系统(Redis客户端)】【通过Redis协议】【和Redis Server 进行交互】。
在Redis 协议之上,客户端和服务端可以实现多种类型的交互模式:
Redis的交互协议包含2 个部分:网络模型
(数据交互的组织方式)和序列化协议
(数据本身如何序列化)。
Redis协议位于TCP之上,客户端和【Redis实例】保持双工的连接,如下图所示:
客户端和服务端交互的内容是序列化后的数据,服务器为每个客户端建立与之对应的连接,在应用层维护一系列状态保存在connection 中,connection 间相互无关联。在Redis中,connection 通过redisClient 结构体实现。
客户端-服务端之间交互的是序列化后的协议数据。在Redis中,协议数据分为不同的类型,每种类型的数据均以…结束,通过数据的 首字符 来区分类型。具体可详见此博客的“Redis协议”章节里的“序列化协议”。
同一个connection在前一个命令执行完成之后,再发送第二个请求,如下图所示。
这种方式的弊端在于,每一个请求的发送都取决于前一个响应。Redis在处理单个请求的时间,通常比局域网传输的时间小1个数量级。因此串行模式下,单连接的大部分时间都处于网络等待,没有充分利用服务器的处理能力。
因为TCP是全双工的,请求响应【异步?】进行时,也不会引起混淆。此时批量的发送命令至服务器,在批量的获取响应数据,可以极大的提高 单连接 的吞吐量。pipeline 交互模式的穿插请求响应,如下入所示:
pipeline 的实现取决于客户端
通常在开发时需要将 批量的命令 原子化执行,Redis 中引入了事务模式。
EXEC
。事务交互模式如下:eval lua_script_string 2 key1 key2 first second
给服务端打开Redis的官网,在顶部导航栏中选中RESOURCES
,在弹出的下拉列表中选中Clients
,如下图所示。
在随后界面的右侧导航栏中,根据自己工程的语言种类选择,比如Java,如下图红框所示。
随后可以看到Java支持的各版本,如下图所示。
Jedis是一个Java Redis客户端库,它提供了许多简单易用的API来操作Redis。
Redisson是一个基于Netty框架的Java Redis客户端库,它提供了分布式锁、分布式集合、分布式对象等功能,支持Redis集群和Sentinel模式。
lettuce是一个高级Java Redis客户端库,用于线程安全同步、异步和【响应使用——响应式API】。支持集群(Cluster)、Sentinel模式、Pipelining和编解码器(codecs)以及Redis 6中的新特性
先按此博客中的方法进行的安装,先给出安装包地址下载地址,在该链接网页中选择.msi
文件,如下图红框所示。
下面自己的方法暂未试通过= =。
先给出官网下载地址,选择哪个安装包根据各自的操作系统而定,这里不再赘述。
选择Windows
操作系统对应的版本后,网站会跳转到一个新的页面,要求我们安装一个WSL
软件——官方解释是因为“Redis在Windows上不受官方支持。但是,您可以按照以下说明在Windows上安装Redis进行开发。要在Windows上安装Redis,首先需要启用WSL2(Windows Linux子系统)。WSL2允许您在Windows上以本机方式运行Linux二进制文件。要使此方法工作,您需要运行Windows 10 2004版及更高版本或Windows 11”。
点击下图红框中的链接开始安装WSL2
。此处先给出该WSL安装说明的链接。
如果使用的Windows是早期版本,需要进行手动安装,官方说明the manual install page.
如下:
“您必须运行Windows 10 2004版及更高版本(内部版本19041及更高)或Windows 11才能使用以下命令。如果您使用的是早期版本,请参阅手动安装页面。”,如下图所示。此处也给出the manual install page的地址。
点击上图红框链接后,来到下图界面。
如果安装过程中遇到问题,可以查看上图红框中的链接,此处给出的是中文说明的网址。
WSL(Windows Subsystem for Linux)是一个由微软与Canonical公司合作开发、为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层,属于Windows操作系统中的一个子系统,目标是可以在Windows系统上运行Linux应用程序——使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。WSL为用户提供了一种在Windows环境下运行Linux软件的方法,无需虚拟机或双系统,大大方便了开发人员在Windows系统下的工作。
开发人员可以在Windows机器上同时访问Windows和Linux的功能。Windows Linux子系统(WSL)允许开发人员安装Linux发行版(如Ubuntu、OpenSUSE、Kali、Debian、Arch Linux等),并在Windows上直接使用Linux应用程序、实用程序和Bash命令行工具,无需修改,而无需传统虚拟机或双端口设置的开销。
将压缩包下载完成后,解压到文件夹中,使用命令提示行来进行安装:
redis-server.exe redis.windows.conf
,即可进行安装。安装成功的标志如下图所示。
语法:
redis-benchmark [选项] [选项值]
选项 作用
- -h 指定服务器主机名
- -p 指定服务器端口
- -s 指定服务器socket(套接字)
- -c 指定并发连接数
- -n 指定请求数
- -d 以字节的形式指定SET/GET值的数据大小
- -k 1=keep alive O=reconnect
- -r SET/GET/INCR使用随机key,SADD使用随机值
- -P 通过管道传输请求
- -q 强制退出redis。仅显示querylsec值
- -csv 以csv格式输出
- -1 生成循环,永久执行测试
- -t 仅运行以逗号分隔的测试命令列表
- -l ldle模式。仅打开N个idle连接并等待
示例1: 向IP地址为192.168.59.118、端口为6379的Redis服务器发送100个并发连接与100000个请求测试性能
redis-benchmark -h 192.168.59.118 -p 6379 -c 100 -n 100000
示例2:测试存取大小为100字节的数据包的性能。
redis-benchmark -h 192.168.59.118 -p 6379 -q -d 100
示例3:测试本机上Redis 服务在进行set与lpush操作时的性能。
命令格式:
select 序号
使用redis-cli连接Redis数据库后,默认使用的是序号为0的数据库
select 1
#切换至序号为1的数据库
select 2
#切换至序号为2的数据库
\redis\rdm.exe
。详见此博客,待验证。
此处先给出Redis官方文档。
redis-server --service-install redis.windows-service.conf --loglevel verbose
:通过redis-server --service-install
在windows操作系统中注册Redis为服务,需要进入Redis的安装目录——比如D:\redis
下——输入此语句。
redis-server --service-uninstall
:通过redis-server --service-uninstall
在windows操作系统中取消注册的服务。
service-install
:注册为windows服务
redis.windows-service.conf
:配置文件名称
–loglevel verbose
:日志级别loglevel
定义为“详细”verbose
redis-server --service-start
:启动
redis-server --service-stop
:关闭
redis-cli
:在Redis的安装目录下,启动redis-cli.exe
文件,如下图所示。请注意,登录Redis服务前需要先启动Redis服务,如下图所示。
使用redis-cli连接Redis数据库后,默认使用的是序号为0的数据库。
上图中指定了ip地址和端口号。
Redis支持多数据库,Redis 默认情况下包含16个数据库,数据库名称是用数字0-15 来依次命名的。 多数据库相互独立,互不干扰。使用redis-cli连接Redis数据库后,默认使用的是序号为0的数据库。
select n
:切换至第n个数据库,命令格式为select 10
,表示切换至序号为10的数据库。
PING
:在登录Redis服务后,测试客户端和服务端是否成功连接,若连接成功,命令行应显示PONG
,如下图所示。
set
: 存放数据,命令格式为 set key value。
get
:获取数据,命令格式为 get key。
move 当前库中的键名 要移动到的数据库的序号
:move yxp 1
移动当前库中键名为“yxp”的键值对到序号为“1”的数据库中。
keys *
:获取所有的key,命令格式为keys 要查找的键
,*
表示任意位的任意字符。keys n*
:获取所有以n
开头的、且其后 【任意位的任意字符】 的键对应的值,命令格式为keys 首字母*
。keys n?
:获取所有以n
开头、且其后仅有一个任意字符的键对应的值。keys n??
获取所有以n
开头、且其后仅有两个任意字符的键对应的值。keys s?
:获取以s开头、其后仅包含—位任意数据,命令格式为keys 首字母?
exists aaa
:判断数据“aaa”是否存在——(存在:1,不存在:0)
del key
:删除当前数据库的key,命令格式为del key——(成功:1,失败:0,比如删除一个已删除的数据)
type key
:获取【该key对应的value值】的类型,命令格式为 type key。
rename key1 key2
:将key1修改为key2。
renamenx key1 key2
:将key1修改为key2之前判断key2是否存在,不存在则重命名。
dbsize
:查看当前数据库中key的数目。
select
:选择数据库,命令格式为select 数据库的序号(第几个数据库)
。
服务使用后,输入exit
退出即可,如下图所示。
安装之后,每次都要先打开一个命令提示符,切换到Redis文件夹下,输入指令redis-server.exe redis.windows.conf
来连接远程的服务器,以启动服务,如下图所示。自认,此种形式是后端启动Redis,但并不能交互设置Redis,只能以运维的形式观看Redis的运行状况
此种情况因为以——后端观察运行情况、无法交互的形式——启动的Redis服务,所以需要再打开一个新的命令提示符窗口,在切换至Redis的安装根目录后,输入指令redis-cli.exe -h 127.0.0.1 -p 6379
,来访问已启动的服务器,成功的话如下图所示。
录入数据mykey=007:set myKey 007
回车
查询数据mykey的值:get myKey
回车
tips:在输入set指令后(还没输入完指令),会自动在后面给你弹出一个输入提示。
录入数据成功,如下所示。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。