Redis的安装及基本使用

Redis

文章目录

一、NoSQL

1、什么是NoSQL

​ NoSQL = Not Only SQL(不仅仅是SQL),也解释为 non-relational(非关系型数据库)。在 NoSQL 数据库中数据之间是无联系的,无关系的。数据的结构是松散的,可变的。

2、为什么使用NoSQL

关系型数据库的瓶颈:

  • 无法应对每秒上万次的读写请求,无法处理大量集中的高并发操作。关系型数据的是 IO 密集的应用。硬盘 IO 也变为性能瓶颈
  • 表中存储记录数量有限,横向可扩展能力有限,一张表最大二百多列。纵向数据可承受能力也是有限的,一张表的数据到达百万级,读写的速度就会逐渐的下降。面对海量数据,必须使用主从复制,分库分表。这样的系统架构是难以维护的。大数据查询 SQL 效率极低,数据量到达一定程度时,查询时间会呈指数级别增长
  • 无法简单地通过增加硬件、服务节点来提高系统性能。数据整个存储在一个数据库中的。多个服务器没有很好的解决办法,来复制这些数据
  • 关系型数据库大多是收费的,对硬件的要求较高。软件和硬件的成本花费比重较大
3、NoSQL的优势
(1)大数据量,高性能

​ NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。关系型数据库(例如MySQL)使用查询缓存。这种查询缓存在更新数据后,缓存就是失效了。在频繁的数据读写交互应用中。缓存的性能不 高。NoSQL的缓存性能要高的多。

(2)灵活的数据模型

​ NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。尤其在快速变化的市场环境中,用户的需求总是在不断变化的。

(3)高可用

​ NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。

​ NoSQL能很好的解决关系型数据库扩展性差的问题。弥补了关系数据(比如MySQL)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。

​ MySQL 和 NoSQL 都有各自的特点和使用的应用场景,两者结合使用。让关系数据库关注在关系上,NoSQL关注在存储上。

(4)低成本

​ 这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的 License 成本。

4、NoSQL 的劣势
  • 无关系,数据之间是无联系的
  • 不支持标准的SQL,没有公认的 NoSQL 标准
  • 没有关系型数据库的约束,大多数也没有索引的概念
  • 没有事务,不能依靠事务实现 ACID
  • 没有丰富的数据类型(数值,日期,字符,二进制,大文本等)

二、Redis安装和使用

Redis是当今非常流行的基于KV 结构的作为 Cache 使用的 NoSQL 数据库

1、Redis介绍

​ Remote Dictionary Server(Redis)是一个开源的使用 ANSIC 语言编写、支持网络、可基于内存亦可持久化的 Key-Value 数据库。Key 字符类型,其值(value)可以是字符串(String),哈希(Map),列表(list),集合(sets)和有序集合(sorted sets)等类型,每种数据类型有自己的专属命令。所以它通常也被称为数据结构服务器。

​ Redis 的作者是 Salvatore Sanilippo,来自意大利的西西里岛。现在居住在卡塔尼亚。目前供职于Pivotal 公司(Pivotal 是 Spring 框架的开发团队),Salvatore Sanfilippo 被称为 Redis 之父。

官网:https://redis.io/
中文:http://www.redis.cn/

2、Window安装Redis

​ Windows 版本的 Redis 是 Microsoft 的开源部门提供的 Redis,这个版本的 Redis 适合开发人员学习使用,生产环境中使用 Linux 系统上的 Redis。

(1)下载

官网:https://redis.io//

windows版本:https://github.com/MSOpenTech/redis/releases
在这里插入图片描述

(2)安装

解压压缩包
在这里插入图片描述

(3)启动Redis

双击 redis-service.exe,启动 Redis 服务
在这里插入图片描述
启动后再双击 redis-cli.exe,打开 redis 客户端
在这里插入图片描述

3、Linux安装Redis
(1)下载

https://download.redis.io/releases/

(2)安装
A、上传redis-6.0.4.tar到linux系统。使用Xftp工具

在这里插入图片描述

B、解压redis-6.0.4.tar到usr/local目录

在这里插入图片描述

C、查看解压后的文件

在这里插入图片描述

D、编译Redis文件, Redis是使用c语言编写的,会使用gcc编译器

​ 在解压后的 Redis 目录下执行(cd /usr/local/redis-3.2.9) make 命令。

注意事项:

  • make 命令执行过程中可能报错,根据控制台输出的错误信息进行解决

  • 错误一:gcc命令找不到,是由于没有安装gcc导致

    解决方式:安装 gcc 编译器后在执行 make 命令

    • 什么是 gcc?

      ​ gcc 是 GNU compiler collection 的缩写,它是 Linux 下一个编译器集合(相当于javac),是 c 或 C++ 程序的编译器。

    • 怎么安装gcc ?

      使用 yum 进行安装 gcc。执行命令:yum -y install gcc
      在这里插入图片描述

  • 错误二error:jemalloc/jemalloc.h:Nosuch file or directory

    解决方式执行:make MALLOC=libc

  • 错误三gcc版本过低:

    make[1]: *** [server.o] Error 1
    make[1]: Leaving directory `/usr/local/redis-6.0.5/src'
    make: *** [all] Error 2
    

    解决方案:

    [root@localhost redis-6.0.5]# gcc -v                             # 查看gcc版本
    [root@localhost redis-6.0.5]# yum -y install centos-release-scl  # 升级到9.1版本
    [root@localhost redis-6.0.5]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
    [root@localhost redis-6.0.5]# scl enable devtoolset-9 bash
    以上为临时启用,如果要长期使用gcc 9.1的话:
    [root@localhost redis-6.0.5]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
    之后再次执行make即可
    

开始执行make
在这里插入图片描述

(3)启动Redis
A、后台启动服务器

在这里插入图片描述

B、查看服务是否启动

在这里插入图片描述

C、启动redis客户端

在这里插入图片描述

(4)关闭Redis

关闭方式:

A、使用redis客户端关闭,向服务器发出关闭命令

​ 切换到redis-3.2.9/src/ 目录,执行 ./redis-cli shutdown。推荐使用这种方式,redis 先完成数据操作,然后再关闭。
在这里插入图片描述

B、kill pid 或者kill -9 pid

​ 这种不会考虑当前应用是否有数据正在执行操作,直接就关闭应用。

​ 先使用ps -ef | grep redis查出进程号,在使用kill pid
在这里插入图片描述

4、Redis客户端
(1)redis命令行客户端

​ redis-cli(Redis Command Line Interface)是Redis 自带的基于命令行的Redis 客户端,用于与服务端交互,我们可以使用该客户端来执行 redis 的各种命令。

两种常用的连接方式:

A、直接连接redis(默认ip127.0.0.1,端口6379): ./redis-cli

在redis安装目录\src,执行./redis-cli

此命令是连接本机127.0.0.1,端口6379的 redis

B、指定IP和端口连接redis: ./redis-cli -h 127.0.0.1 -p 6379
  • -h:redis主机IP(可以指定任意的 redis 服务器)
  • -p:端口号(不同的端口表示不同的 redis 应用)

在 redis 安装目录\src,执行./redis-cli -h 127.0.0.1 ~p 6379
在这里插入图片描述

(2)redis远程客户端

Redis Desktop Manager:C++编写,响应迅速,性能好。

  • 官网地址:https://redisdesktop.com/
  • github:https://github.com/uglide/RedisDesktopManager
  • 使用文档:http://docs.redisdesktop.com/en/latest/
A、使用客户端连接Linux的Redis

​ 连接 Linux 的 Reids 之前需要修改 Redis 服务器的配置信息。Redis 服务器有安全保护措施,默认只有本机(安装Redis的那台机器)能够访问。配置信息存放在 Redis 安装目录下的 redis.conf 文件。修改此文件的两个设置。

​ 远程连接 redis 需要修改 redis 主目录下的 redis.conf 配置文件:

  • bind ip 绑定 ip 此行注释
  • protected-mode yes 保护模式改为no
  • 使用 vim 命令修改 redis.conf 文件,修改文件前备份此文件,执行 cp 命令
    在这里插入图片描述
    执行vim redis.conf
    在这里插入图片描述
    在这里插入图片描述
    保存退出即可。
B、使用redis.conf启动redis-server服务

注意:每次启动 redis,都需要指定 redis.conf 的文件位置,因为 redis 启动不加载 redis.conf 这个文件,而我们修改了这个文件,要让此文件修改的内容生效,必须每次都要指定 redis.conf 的文件位置,否则修改的内容就不起作用了。
在这里插入图片描述

C、关闭Linux的防火墙

在这里插入图片描述

D、客户端连接

在这里插入图片描述
查看客户端显示内容
在这里插入图片描述

(3)redis编程客户端
A、Jedis

​ redis 的 Java编程客户端,Redis 官方首选推荐使用 Jedis,jedis 是一个很小但很健全的 redis 的 java客户端。通过 Jedis 可以像使用Redis 命令行一样使用Redis。

  • jedis 完全兼容:redis 2.8.x and 3.x.x
  • Jedis 源码:https://github.com/xetorthio/jedis
  • api 文档:http://xetorthio.github.io/jedis/
B、redis的其他编程语言客户端

​ C、C++、C#、Erlang、 Lua、Objective-C、Perl、PHP、Python、Ruby、Scala、Go等40多种语言都有连接 redis 的编程客户端。

5、Redis基本操作命令

​ redis 默认为16个库(在 redis.conf 文件可配置,该文件很重要,后续很多操作都是这个配置文件),redis 默认自动使用0号库。

(1)沟通命令,查看状态

redis > ping 返回 PONG

解释:输入 ping,redis 给我们返回 PONG,表示 redis 服务运行正常
在这里插入图片描述

(2)查看当前数据库中key的数目:dbsize

语法:dbsize

作用:返回当前数据库的key的数量

返回值:数字,key 的数量

例:查询当前数据库的 key 的数量
在这里插入图片描述

(3)redis默认使用16个库

​ Redis 默认使用16个库,从0到15。对数据库个数的修改,在 redis. conf 文件中
在这里插入图片描述

(4)切换库命令:select db

​ 使用其他数据库,命令是 select index

例:select 5
在这里插入图片描述

(5)删除当前库的数据:flushdb

在这里插入图片描述

(6)redis自带的客户端退出当前redis连接:exit或quit

在这里插入图片描述

6、Redis的Key的操作命令
(1)keys

语法:keys pattern

作用:查找所有符合模式 pattern 的 key。pattern 可以使用通配符。

通配符:

  • *:表示 0 - 多个字符,例如:keys * 查询所有的 key
  • ?:表示单个字符,例如:wo?d,匹配 word、wood

例1:显示所有的 key
在这里插入图片描述
例2:使用 * 表示0或多个字符
在这里插入图片描述

(2)exists

语法:exists key [key…]

作用:判断 key 是否存在

返回值:整数,存在 key 返回 1,其他返回 0。使用多个 key,返回存在的 key 的数量。

例1:检查指定 key 是否存在
在这里插入图片描述
例2:检查多个 key
在这里插入图片描述

(3)expire

语法:expire key seconds

作用:设置 key 的生存时间,超过时间,key 自动删除。单位是秒。

返回值:设置成功返回数字 1,其他情况是 0

例:设置 word 的倒计时是30秒
在这里插入图片描述

(4)ttl

语法:ttl key

作用:以秒为单位,返回 key 的剩余生存时间(ttl: time to live)

返回值:

  • -1:没有设置 key 的生存时间, key 永不过期
  • -2:key不存在
  • 数字:key 的剩余时间,秒为单位

例1:设置 word 的过期时间是30,查看剩余时间
在这里插入图片描述
例2:查看 word 是否存在
在这里插入图片描述

(5)type

语法:type key

作用:查看 key 所存储值的数据类型

返回值:字符串表示的数据类型

  • none(key 不存在)
  • string (字符串)
  • list(列表)
  • set(集合)
  • zset(有序集)
  • hash(哈希表)

例1:查看存储字符串的 key:wood
在这里插入图片描述
例2:查看不存在的 key
在这里插入图片描述

(6)del

语法:del key [key…]

作用:删除存在的 key,不存在的 key 忽略

返回值:数字,删除的 key 的数量

例:删除指定的 key
在这里插入图片描述

7、Redis的5种数据类型
(1)字符串类型 string

​ 字符串类型是 Redis 中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据,序列化后的数据,JSON化的对象甚至是一张图片。最大512M。

keyvalue
username张三
(2)哈希类型 hash

​ Redis hash是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

keyloginuser
fieldvalue
uname李四
times5
region武汉
//上面表格相当于以下程序
Map<String, String> data = new HashMap();
data.put("uname","李四");
data.put("times","5");
data . put ("region","武汉");

Map<String,Map<String,string> map = new ...
map.put("loginuser",data);	//redis hash类型
(3)列表类型 list

​ Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

keyvalue
region北京 上海 广州
(4)集合类型 set

​ Redis 的 Set 是 string 类型的无序集合,集合成员是唯一的, 即集合中不能出现重复的数据。

keyvalue
spring
frameworkmybatis
springmvc
(5)有序集合类型 zset(sorted set)

​ Redis 有序集合 zset 和集合 set 一样也是 string 类型元素的集合,且不允许重复的成员。不同的是 zset 的每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中的成员进行从小到大的排序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值