Redis基本知识

第一章 NoSQL

1-1 什么是 NoSQL

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

1-2 为什么使用 NoSQL

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

1-3 NoSQL 的优势

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

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

  3. 高可用
    NoSQL 在不太影响性能的情况,就可以方便的实现高可用的架构。
    NoSQL 能很好的解决关系型数据库扩展性差的问题。弥补了关系数据(比如 MySQL)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。
    MySQL 和NoSQL 都有各自的特点和使用的应用场景,两者结合
    使用。让关系数据库关注在关系上,NoSQL 关注在存储上

低成本

这是大多数分布式数据库共有的特点,因为主要都是开源软件,

1-4 NoSQL 的劣势

(1) 无关系,数据之间是无联系的。

(1) 不支持标准的 SQL,没有公认的 NoSQL 标准

(3) 没有关系型数据库的约束,大多数也没有索引的概念

(4) 没有事务,不能依靠事务实现ACID.

(5) 没有丰富的数据类型(数值,日期,字符,二进制,大文本等)

第二章 Redis 安装和使用

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

2-1 Redis介绍

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

Redis 的作者是 Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。目前供职于 Pivotal 公司(Pivotal 是 Spring 框架的开发团队),Salvatore Sanfilippo 被称为Redis 之父。
官网:https://redis.io/
中文:http://www.redis.cn/

Redis的历史:
2008年,意大利的一家创业公司Merzia推出了一款基于MySQL 的网站实时统计系统LLOOGG,然而没过多久该公司的创始人Salvatore Sanfilippo便开始对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。

不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品,而是希望让更多的人使用它,于是在同一年Salvatore Sanfilippo将Redis开源发布,并开始和Redis的另一名主要的代码贡献者Pieter Noordhuis一起继续着Redis的开发,直到今天。

Salvatore Sanfilippo自己也没有想到,短短的几年时间,Redis 就拥有了庞大的用户群体。2012年数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、知乎,国外如GitHub、Stack Overflow、Flickr、暴雪和Instagram,都是Redis 的用户。

VMware公司从2010年开始赞助Redis的开发,Salvatore Sanfilippo和Pieter Noordhuis也分别于同年的3月和5月加入VMware,全职开发Redis。

Redis的代码托管在GitHub上https://github.com/antirez/redis,开发十分活跃,代码量只有3 万多行。

2-2 Window 上安装Redis

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

  1. 下载
    官网:https://redis.io/
    windows 版 本 :
    https://github.com/MSOpenTech/redis/releases
    在这里插入图片描述

  2. 安装
    下载的 Redis-x64-3.2.100.zip 解压后, 放到某个目录(例如d:\tools\),即可使用。目录结构:
    在这里插入图片描述

  3. 启动
    A、 Windows7 系统双击 redis-server.exe 启动Redis
    在这里插入图片描述
    B、 Windows 10 系统
    有的机器双击 redis-server.exe 执行失败,找不到配置文件,可以采用以下执行方式:
    在 命 令 行 (cmd) 中 按 如 下 方 式 执 行 : D:\tools\Redis-x64-3.2.100>redis-server.exe redis.windows.conf
    如图:
    在这里插入图片描述

  4. 关闭
    按ctrl+c 退出Redis 服务程序。

2-3 Linux 上安装 Redis

  1. 下载
    wget http://219.238.7.66/files/502600000A29C8D5/download.redis. io/releases/redis-3.2.9.tar.gz

  2. 安装
    A、上传redis-3.2.9.tar到linux系统。使用Xftp
    在这里插入图片描述
    B、 解压redis-3.2.9.tar 到usr/local 目录
    在这里插入图片描述
    C、 查看解压后的文件
    在这里插入图片描述

D、 编译Redis 文件,Redis 是使用 c 语言编写的。会使用gcc编译器。
在解压后的Redis 目录下执行 (cd /usr/local/redis-3.2.9) make
命令。

注意事项:
1) make 命令执行过程中可能报错,根据控制台输出的错误信息进行解决
2) 错误一:gcc 命令找不到,是由于没有安装 gcc 导致解决方式:安装gcc 编译器后在执行 make 命令

什么是 gcc ?
gcc 是GNU compiler collection 的缩写,它是 Linux 下一个编译器集合( 相当于 javac ),是 c 或c++程序的编译器。
怎么安装gcc ?
使用yum进行安装gcc 。执行命令:yum -y install gcc

3) 错误二: error: jemalloc/jemalloc.h: No such file or directory
解决方式执行 make MALLOC=libc

开始执行make
在这里插入图片描述
出现错误:
在这里插入图片描述
没有gcc , cc 编译器 ,解决安装gcc
使用 yum -y install gcc
在这里插入图片描述
重新再编译 make 。注意:安装完 gcc 之后,再执行 make,先执行 make distclean 清理一下上次make 后产生的文件。
先执行 make distclean
在这里插入图片描述
再执行make
在这里插入图片描述
执行make 成功的标志
在这里插入图片描述
注意:在make执行之后再执行 make install,该操作则将 src下的许多可执行文件复制到/usr/local/bin 目录下,这样做可以在任意目录执行redis的软件的命令(例如启动,停止,客户端连接服务器等), make install 可以不用执行,看个人习惯。
查看make编译结果,cd src目录
在这里插入图片描述
cd src 在执行 ls
在这里插入图片描述
3) 启动Redis

启动方式:

① 前台启动 ./redis-server
② 后台启动 ./redis-server &

第①种 前台启动
启动Redis 的服务器端:切换到 src 目录下执行 redis-server 程序
在这里插入图片描述
redis 应用以前台的方式启动,不能退出当前窗口, 退出窗口,应用终止。

在其他窗口查看 redis 启动的进程
在这里插入图片描述
第②种 后台启动
src目录下执行 ./redis-server & 此时关闭窗口,查看redis进程, 依然存在。
在这里插入图片描述
查看redis进程
在这里插入图片描述
4) 关闭Redis

关闭方式:
① 使用redis 客户端关闭, 向服务器发出关闭命令
切换到 redis-3.2.9/src/ 目录,执行 ./redis-cli shutdown
推荐使用这种方式, redis 先完成数据操作,然后再关闭。
在这里插入图片描述
② kill pid 或 者 kill -9 pid
这种不会考虑当前应用是否有数据正在执行操作,直接就关闭应用。
先使用 ps -ef | grep redis 查出进程号, 在使用 kill pid
在这里插入图片描述

2-4 Redis 客户端

Redis 客户端是一个程序,通过网络连接到 Redis 服务器, 在客户端软件中使用 Redis 可以识别的命令,向 Redis 服务器发送命令, 告诉Redis 想要做什么。Redis 把处理结果显示在客户端界面上。通过Redis 客户端和Redis 服务器交互。
Redis 客户端发送命令,同时显示 Redis 服务器的处理结果在。

2-4-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
例 1:
在这里插入图片描述

2-4-2 redis 远程客户端

Redis Desktop Manager:C++ 编写,响应迅速,性能好。官网地址: https://redisdesktop.com/
github: https://github.com/uglide/RedisDesktopManager
使用文档:http://docs.redisdesktop.com/en/latest/

在这里插入图片描述
点击“DOWNLOAD”
在这里插入图片描述
A、 安装客户端软件

在 Windows 系统使用此工具,连接 Linux 上或 Windows Redis , 双击此 exe 文件执行安装
在这里插入图片描述
安装后启动界面:
在这里插入图片描述
B、 使用客户端连接 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
在这里插入图片描述
C、 使用 redis.conf 启动 Redis

修改配置文件后,需要使用配置文件重新启动 Reids,默认不加载配置文件。先关闭已经启动的 Redis ,使用以下命令启动Redis 在Redis 安装目录执行:
./redis-server …/redis.conf &
在这里插入图片描述
D、 配置Redis Desktop Manamager(RDM),连接 Redis

在 RDM 的主窗口,点击左下的“Connect to Redis Server”
在这里插入图片描述
连接成功后:
在这里插入图片描述

2-4-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 的编程客户端

2-5 Redis 基本操作命令

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

  1. 沟通命令,查看状态
    redis >ping 返 回 PONG
    解释:输入 ping,redis 给我们返回PONG,表示 redis 服务运行正常
    在这里插入图片描述

  2. 查看当前数据库中key 的数目:dbsize
    语法:dbsize
    作用:返回当前数据库的 key 的数量。返回值:数字,key 的数量
    例:先查索引 5 的key 个数, 再查 0 库的key 个数
    在这里插入图片描述

  3. redis 默认使用 16 个库

Redis 默认使用 16 个库,从 0 到 15。 对数据库个数的修改,在
redis.conf 文件中databases 16
在这里插入图片描述
4) 切换库命令:select db

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

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

  1. 删除当前库的数据:flushdb
    在这里插入图片描述

  2. redis 自带的客户端退出当前 redis 连接: exit 或 quit
    在这里插入图片描述

2-6 Redis 的 Key 的操作命令

  1. keys

语法:keys pattern
作用:查找所有符合模式 pat

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值