Redis

1.redis介绍

1.1什么是NoSQL

NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:
(1)High performance - 对数据库高并发读写的需求
web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求,例如网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因此这是一个相当普遍的需求。
(2)Huge Storage - 对海量数据的高效率存储和访问的需求
类似Facebook,twitter,Friendfeed这样的SNS网站,每天用户产生海量的用户动态,以Friendfeed为例,一个月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。再例如大型web网站的用户登录系统,例如腾讯,盛大,动辄数以亿计的帐号,关系数据库也很难应付。
(3)High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?

NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

一些主流的NOSQL产品:
在这里插入图片描述

NoSQL数据库的四大分类如下:

  • 键值(Key-Value)存储数据库

相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
数据模型: 一系列键值对
优势: 快速查询
劣势: 存储的数据缺少结构化

  • 列存储数据库

相关产品:Cassandra, HBase, Riak
典型应用:分布式的文件系统
数据模型:以列簇式存储,将同一列数据存在一起
优势:查找速度快,可扩展性强,更容易进行分布式扩展
劣势:功能相对局限

  • 文档型数据库

相关产品:CouchDB、MongoDB
典型应用:Web应用(与Key-Value类似,Value是结构化的)
数据模型: 一系列键值对
优势:数据结构要求不严格
劣势: 查询性能不高,而且缺乏统一的查询语法

  • 图形(Graph)数据库

相关数据库:Neo4J、InfoGrid、Infinite Graph
典型应用:社交网络
数据模型:图结构
优势:利用图结构相关算法。
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

1.2redis历史发展

2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,然而没过多久该公司的创始人 Salvatore Sanfilippo便 对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。 不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品,而是希望更多的人使用它,于是在同一年Salvatore Sanfilippo将Redis开源发布,并开始和Redis的另一名主要的代码贡献者Pieter Noordhuis一起继续着Redis的开发,直到今天。
Salvatore Sanfilippo自己也没有想到,短短的几年时间,Redis就拥有了庞大的用户群体。Hacker News在2012年发布了一份数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、街旁网、知乎网,国外如GitHub、Stack Overflow、Flickr等都是Redis的用户。
VMware公司从2010年开始赞助Redis的开发, Salvatore Sanfilippo和Pieter Noordhuis也分别在3月和5月加入VMware,全职开发Redis。

3.3什么是redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
字符串类型
散列类型
列表类型
集合类型
有序集合类型。

3.4redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
分布式集群架构中的session分离。
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)

2测试环境

redis需要安装在linux服务器上运行测试,本教程使用 linux虚拟机及ssh客户端进行功能测试。

2.1虚拟机

创建Centos6.4虚拟机作为linux服务器。

虚拟机ip:192.168.93.88

2.2ssh客户端

在开发环境(windows)安装ssh客户端,本教程使用SecureCRT作为ssh客户端连接虚拟机。

3 linux上安装运行redis

3.1 安装redis环境

redis是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。
安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++

3.2 redis安装

版本说明
本教程使用redis3.0版本。3.0版本主要增加了redis集群功能。

源码下载
从官网下载
http://download.redis.io/releases/redis-3.0.0.tar.gz
将redis-3.0.0.tar.gz拷贝到/usr/local下

解压源码
tar -zxvf redis-3.0.0.tar.gz
进入解压后的目录进行编译
cd /usr/local/redis-3.0.0
make
安装到指定目录,如 /usr/local/redis
cd /usr/local/redis-3.0.0
make PREFIX=/usr/local/redis install

redis.conf
redis.conf是redis的配置文件,redis.conf在redis源码目录。
注意修改port作为redis进程的端口,port默认6379。

拷贝配置文件到安装目录下
进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下
cd /usr/local/redis
mkdir conf
cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis/bin

安装目录bin下的文件列表
在这里插入图片描述

在这里插入图片描述

redis3.0新增的redis-sentinel是redis集群管理工具可实现高可用。
在这里插入图片描述

配置文件目录:

3.3 redis启动
3.3.1前端模式启动

直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。如下图:

在这里插入图片描述

3.3.2后端模式启动

修改redis.conf配置文件, daemonize yes 以后端模式启动。

执行如下命令启动redis:
cd /usr/local/redis
./bin/redis-server ./redis.conf

redis默认使用6379端口。

也可更改redis.conf文件,修改端口号:

3.3.3启动多个redis进程

方法1:
启动时指定端口可在一台服务器启动多个redis进程。
cd /usr/local/redis/bin
./redis-server ./redis.conf --port 6380

方法2(推荐此方法):
创建多个redis目录,以端口号命名,比如:创建6379、6380两个目录,将redis的安装文件bin和conf拷贝至这两个目录。
修改6379目录下的redis.conf设置端口号为6379
修改6380目录下的redis.conf设置端口号为6380
启动6379和6380目录下的redis-server程序:
cd 6379
./redis-server . /redis.conf
cd 6380
./redis-server . /redis.conf

查询当前redis的进程:
在这里插入图片描述

3.4redis停止

强行终止Redis进程可能会导致redis持久化数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:

cd /usr/local/redis
./bin/redis-cli shutdown

3.5redis客户端

在redis的安装目录中有redis的客户端,即redis-cli(Redis Command Line Interface),它是Redis自带的基于命令行的Redis客户端。

3.5.1连接redis服务端

执行bin/redis-cli连接redis服务端:
在这里插入图片描述
从上图得知redis-cli默认连接本机的redis,本机的redis没有启动则报上图中的错误。

指定连接redis服务的ip和端口:

在这里插入图片描述

3.5.2向redis服务端发送命令

redis-cli连上redis服务后,可以在命令行发送命令。

ping
Redis提供了PING命令来测试客户端与Redis的连接是否正常,如果连接正常会收到回复PONG
在这里插入图片描述
set/get

使用set和get可以向redis设置数据、获取数据。

在这里插入图片描述

del
删除指定key的内容。
例如:del name

Keys *
查看当前库中所有的key值

3.6redis多数据库
3.6.1redis实例

一个redis进程就是一个redis实例,一台服务器可以同时有多个redis实例,不同的redis实例提供不同的服务端口对外提供服务,每个redis实例之间互相影响。每个redis实例都包括自己的数据库,数据库中可以存储自己的数据。

3.6.2多数据库测试

一个Redis实例可以包括多个数据库,客户端可以指定连接某个redis实例的哪个数据库,就好比一个mysql中创建多个数据库,客户端连接时指定连接哪个数据库。
一个redis实例最多可提供16个数据库,下标从0到15,客户端默认连接第0号数据库,也可以通过select选择连接哪个数据库,如下连接1号库:
在这里插入图片描述

在1号库中查询上节设置的数据,结果查询不到:
在这里插入图片描述

重新选择第0号数据库,查询数据:
在这里插入图片描述

如果选择一个不存在数据库则会报错:
在这里插入图片描述
注意:redis不支持修改数据库的名称,只能通过select 0、select 1…选择数据库。

3.6.3注意问题


在0号数据库存储数据,在1号数据库执行清空数据命令却把0号数据库的数据给清空了:
在这里插入图片描述

建议:不同的应用系统要使用不同的redis实例而不是使用同一个redis实例下的不同数据库。

4 Windows下Redis安装与配置

4.1Redis选择

Redis 官网地址:https://redis.io/
Redis 源码地址:https://github.com/redis/redis

Redis 在 Windows 平台上不受官方支持,Redis 官方只提供了源码包(zip、tar.gz 格式)。当然想要在 Windows 上安装 Redis 也还是可行的。

4.1.1 微软官方维护的 Redis

可以下载微软官方维护的支持 Windows平台的 Redis 安装包
下载地址:https://github.com/microsoftarchive/redis/releases
注意:仅有 Redis2.0 和 Redis3.0 的部分版本,最后一次更新是2016年,目前已停止维护了。而截止到2023年6月Redis官网的最新版本是 Redis7.2

4.1.2 tporadowski 维护的 Redis

tporadowski 大神也提供了 支持 Windows平台的 Redis 安装包,目前仍在维护,目前最新版本是 5.0.14,更新速度跟Redis官网也相差好几个大版本。
下载地址:https://github.com/tporadowski/redis/releases

4.1.3 使用 WSL 安装 Redis

WSL(Windows Subsystem for Linux),WSL是 Windows 下的 Linux 子系统,这也是 Redis 官方介绍的在 Windows 下安装 Redis 的方案。
需要启动 WSL2,而启动 WSL2 则要求 Windows 系统版本 Windows 10 version 2004+ 或 Windows 11,详见官网介绍:install-redis-on-windows

4.1.4 使用gcc编译器在Windows下编译redis源码

安装MinGw(安装gcc编译c代码)或者Cygwin(提供一个虚拟Linux环境,和WSL有些类似)
MinGW地址:https://sourceforge.net/projects/mingw/
Cygwin地址:https://cygwin.com/install.html

总结:上述四种方式,方法3 对 Windows 版本要求较高(至少我的系统不满足);方法4 需要安装第三方工具,也较麻烦,我捣鼓半天也没成功;方法1 支持的Redis版本太低了;方法2 虽然支持的版本也不是最新的,但相对 方法1 要强一些。

2023.09.02 更新:

使用Cygwin编译最新版的Redis源码,有新进展了,感兴趣的可以参考:
如何使用Cygwin编译最新版的Redis源码,生成适用于Windows的Redis

另外,对伸手党又有新福利了。
在Github上找到了其他已编译好的适用于Windows的,较新版本的redis:

zkteco-home/redis-windows/releases
(Redis for Windows X64,使用Visual Studio 2022编译,据说比Cygwin, MSYS编译的更稳定、更高性能)
目前最新版本为 redis-7.0.11

redis-windows/redis-windows/releases
(Redis for Windows X64,使用 MSYS2 编译)
目前最新可用版本为 redis-7.0.12 (注意tag里有7.2.0版本,但是不可用)

4.2 win版Redis 安装

这里使用 tporadowski 维护的 Redis 进行安装演示
下载安装包:Redis-x64-5.0.14.1.msi、Redis-x64-5.0.14.1.zip
下载安装包

4.2.1 msi 安装包 安装
1)双击 msi 安装包

双击 msi 安装程序,打开安装向导,点击 next
wizard

2)接受终端用户协议

接受终端用户协议,点击 next
接受终端用户协议

3)选择安装路径

选择安装路径,并勾选将安装路径添加的系统 PATH 环境变量
选择安装位置

4)设置服务端口

设置 Redis 服务端口,默认 6379,点击 next
Redis 服务端口

5)设置最大内存限制

设置最大内存限制,点击 next

注意:
如果 redis 的应用场景是作为数据库使用,不建议设置最大内存限制,因为数据库是不能容忍丢失数据的;如果作为临时缓存使用,看实际需要进行设置。
如果指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。
当然你也可以配置具体的策略来应对数据达到内存最大限制时的情况,详见redis官网:Eviction policies

6)完成安装

点击 install 完成安装
点击Install

7)验证 Redis

打开"任务管理器",可以看到服务列表下启动了 Redis 服务
Redis服务
查看"系统环境变量",PATH变量,新增了 Redis的路径

打开 cmd 窗口,输入 redis-cli 连接 redis服务,并做简单验证
连接Redis服务

8)卸载 Redis

为了方便下面 zip安装包 安装演示,这里将上述安装的Redis卸载。
在 “设置”>“应用与功能” 列表找到 Redis 应用,点击"卸载"

4.2.2 zip 安装包 安装

zip 安装比较简单,直接将 zip安装包解压到某个路径下即可。(先将已安装的Redis卸载)

1)解压安装包

2)启动Redis服务

打开cmd窗口,切换到Redis安装路径,输入 redis-server 启动 redis 服务

3)连接Redis服务

再打开一个新的cmd窗口,切换到Redis安装路径,输入 redis-cli 连接到 Redis 服务
连接redis服务

4)设置服务自启动

设置服务在后台启动,且随系统开机自启动
步骤 2)中通过cmd命令 redis-server 启动的服务,当cmd窗口关闭后,服务就关闭了。如果想要让Redis服务在后台运行,且随系统启动而自启动,可以使用sc命令完成,具体实现过程如下:

SC 是用来与服务控制管理器和服务进行通信的命令行程序,可以在cmd窗口输入 sc 查看帮助信息

使用管理员身份,开启cmd窗口
(注意一定要使用管理员身份,否则可能会报错,如:[SC] OpenSCManager 失败 5)

a. 使用 sc create 命令查看帮助

sc create

b. 使用 sc create 命令创建服务项

sc create Redis binPath= "D:\Chen\MySoft\Redis\redis-server.exe --service-run D:\Chen\MySoft\Redis\redis.windows-service.conf" start= auto

binPath 参数值里的路径请改为你自己Redis的服务路径及服务配置路径
start 设置为 auto ,意思是自启动,计算机重启后,服务会随着启动

c. 使用 sc query 命令查看服务状态

sc query Redis

d. 使用 sc start 命令启动服务

sc start Redis

e. 使用 sc qc 命令查看服务配置

sc qc Redis

f. 使用 reg query 命令查看注册表信息

reg query HKLM\SYSTEM\CurrentControlSet\Services\Redis

5)测试Redis服务

在redis解压路径,打开cmd,输入 redis-cli 命令,测试 redis 是否可以正常使用
(reg start Redis 启动服务后才能正常连接)

6)添加PATH环境变量

步骤5)中,连接Redis服务时,每次都需要进入到Redis的路径下 执行 redis-cli,我们可以将Redis路径添加到 PATH 环境变量,来优化操作路径。

这样就可以在cmd窗口,任意路径下使用 redis-cli 命令了。
(注意:添加环境变量前已打开的cmd窗口,仍找不到redis-cli命令,重新打开新的cmd窗口进行验证)
验证redis-cli命令

7)停止或删除Redis服务

a. 使用 sc stop 命令停止(禁用)服务

sc stop Redis

4.2.3 Redis 配置
1. 查看 Redis 配置

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.windows.conf、redis.windows-service.conf

通过 msi 安装包安装的 redis 服务,默认使用的是 redis.windows-service.conf;
通过 zip 安装包安装的 redis 服务,使用的是自己指定的 redis 配置;
如果 直接使用 redis-server.exe 启动 服务,而未指定 服务配置文件路径,则默认使用的是 redis.windows.conf 配置

1)使用 Redis 的 CONFIG GET 命令查看
格式:CONFIG GET CONFIG_SETTING_NAME

注:返回结果中,奇数为配置项名,偶数为配置项值,成对出现,值为空,则为""

2)直接使用文件编辑器查看配置信息

配置文件查看配置信息
注:配置文件中,# 起注释作用,未注释的部分则为配置信息,注释的部分详细的解释了配置信息。

2. 修改 Redis 配置
1)使用 Redis 的 CONFIG SET 命令修改

注意:
通过 config get 查询到的配置为 Redis 服务启动时加载到内存中的配置信息,如果通过 config set 修改了配置信息,也仅是修改内存中的配置信息,并不会更改配置文件,且服务重启后配置文件里的数据会重新加载到运行内存

2)修改配置文件,更改配置信息

注意:
配置文件里的配置信息,在服务启动后,会加载到运行内存。因此,修改了配置文件后,如果想要使修改后的配置生效,需要重启 Redis 服务

在这里插入图片描述

3. Redis 配置项说明

关于各配置项的作用及使用方法,在配置文件里有详细的说明,接下来用一个表格,简单概述下各配置项。

5.最好用的Redis Desktop Manager 0.9.3

5.1前言

官网地址:https://resp.app/
在这里插入图片描述

Redis Desktop Manager是一个Redis数据库图形界面管理工具,它提供了对Redis键值对存储的可视化操作和监控。其主要功能包括:

  • 连接和管理多个Redis服务器
  • 查看和编辑Redis中的键值对数据
  • 执行Redis命令和脚本
  • 监控Redis服务器性能并进行诊断
  • 导入和导出Redis数据
  • 支持多种插件扩展
  • 通过Redis Desktop Manager,用户可以更加方便地管理和运维Redis数据库,提高开发效率和数据安全性。可惜天下没有免费的午餐,为爱发电终究不能持久,Redis Desktop Manager作者在 0.9.4 版本之后选择对所有的安装包收费,不再提供安装包下载,但是源码依旧公开,所以我们可能根据源码进行编译生成自己想要的版本。
5.2编译教程

5.2.1 redis destop manager 的源码地址
https://github.com/uglide/RedisDesktopManager

5.2.2 编译教程
官方编译教程
http://docs.redisdesktop.com/en/latest/install/
Redis Desktop Manager 2020.2 Windows 源码编译
https://blog.csdn.net/aileitianshi/article/details/107920808
但是网络上关于 Redis Desktop Manager 的编译教程都是 Linux 下的,没有任何参考价值。而官方文档提供的步骤只有寥寥几个字,没有任何可操作性,一般人还真搞定不了,建议直接使用第二个 Redis Desktop Manager 2020.2 Windows 源码编译。在使用的过程成如果有任何疑问都可以留言我也会抽时间回答大家的。

5.3下载链接

安装使用教程:Redis Desktop Manager(Redis可视化工具)安装及使用教程
新版本的页面好看很多还能切换中英文:

如果你用的是Redis Desktop Manager 0.8的版本强烈建议你切换成0.9.3最后一版不收费的版本。我用0.8版本进行1万条数据查询时经常卡死,或者链接超时。0.9.3却不会卡死很流畅。

Redis Desktop Manager 0.9.3 福利下载链接:
本人提供下载链接:https://pan.baidu.com/s/1SXsym8jY4pnPTHSlANjU2g 提取码:3yxs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值