Redis的安装及基本使用

    技术2024-07-13  80

    Redis

    文章目录

    Redis一、NoSQL1、什么是NoSQL2、为什么使用NoSQL3、NoSQL的优势(1)大数据量,高性能(2)灵活的数据模型(3)高可用(4)低成本 4、NoSQL 的劣势 二、Redis安装和使用1、Redis介绍2、Window安装Redis(1)下载(2)安装(3)启动Redis 3、Linux安装Redis(1)下载(2)安装A、上传redis-6.0.4.tar到linux系统。使用Xftp工具B、解压redis-6.0.4.tar到usr/local目录C、查看解压后的文件D、编译Redis文件, Redis是使用c语言编写的,会使用gcc编译器 (3)启动RedisA、后台启动服务器B、查看服务是否启动C、启动redis客户端 (4)关闭RedisA、使用redis客户端关闭,向服务器发出关闭命令B、kill pid 或者kill -9 pid 4、Redis客户端(1)redis命令行客户端A、直接连接redis(默认ip127.0.0.1,端口6379): ./redis-cliB、指定IP和端口连接redis: ./redis-cli -h 127.0.0.1 -p 6379 (2)redis远程客户端A、使用客户端连接Linux的RedisB、使用redis.conf启动redis-server服务C、关闭Linux的防火墙D、客户端连接 (3)redis编程客户端A、JedisB、redis的其他编程语言客户端 5、Redis基本操作命令(1)沟通命令,查看状态(2)查看当前数据库中key的数目:dbsize(3)redis默认使用16个库(4)切换库命令:select db(5)删除当前库的数据:flushdb(6)redis自带的客户端退出当前redis连接:exit或quit 6、Redis的Key的操作命令(1)keys(2)exists(3)expire(4)ttl(5)type(6)del 7、Redis的5种数据类型(1)字符串类型 string(2)哈希类型 hash(3)列表类型 list(4)集合类型 set(5)有序集合类型 zset(sorted set)

    一、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.xJedis 源码:https://github.com/xetorthio/jedisapi 文档: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。

    keyvalueusername张三
    (2)哈希类型 hash

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

    keyloginuserfieldvalueuname李四times5region武汉 //上面表格相当于以下程序 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 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

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

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

    keyvaluespringframeworkmybatisspringmvc
    (5)有序集合类型 zset(sorted set)

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

    Processed: 0.011, SQL: 9