# Redis数据库与Linux配置 -- 潘登同学的后端笔记
NoSQL的由来
Redis是属于NoSQL技术下的一种实现,是应对越来越大的数据量,数据类型结构越来越复杂的背景下,创建的专门用于处理此类数据(如:大文本字段,图片等),分担读写压力的
NoSQL = Not only SQL 不仅是SQL
泛指非关系型数据库, 对比关系型数据库, NoSQL没有sql语句,不需要设计表结构,没有表关系
很多数据类型如: 用户的个人信息,社交网络,地理位置,这些数据类型的储存不需要一个固定的模型,只用JSON来储存即可
NoSQL的特点
- 方便扩展
- 大数据量高性能
- 数据类型多样性
传统RDBMS 与 NoSQL
RDBMS:
- 结构化数据
- 结构化查询语句SQL
- 数据和关系都存储在单独的表中
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
NoSQL:
- 没有固定的查询语言
- 键值对存储、列存储、文档存储、图关系数据库
- 最终一致性
- CAP定理和BASE理论
- 高性能,高可用,高可扩
NoSQL的四大分类
分类 | 常见数据库 | 典型应用场景 | 优点 | 缺点 |
---|---|---|---|---|
键值对(key-value) | Tokyo, Cabinet/Tyrant, Redis, Voldemort, Oracle BDB |
内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 | 查找速度快 | 数据无结构化,通常只被当作字符串或者二进制数据 |
文档型数据库 | CouchDB, MongoDB |
Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 功能相对局限 |
列存储数据库 | Cassandra, HBase, Riak |
分布式的文件系统 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 查询性能不高,而且缺乏统一的查询语法。 |
图形数据库 | Neo4J, InfoGrid, Infinite Graph |
社交网络,推荐系统等。专注于构建关系图谱 | 利用图结构相关算法。比如最短路径寻址,N度关系查找等 | 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。 |
Linux 下载安装
先下载VMware Workstation Pro https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
安装一路next即可,最后选择输入许可证(支持正版哦!!)
再下载 CentOS
阿里镜像站 https://mirrors.aliyun.com/centos-vault/
版本选择 7.5 -> isos -> x86_64 -> CentOS-7-x86_64-DVD-1804.iso
最后下载xshell https://link.zhihu.com/?target=https%3A//xshell.en.softonic.com/%3F
VMware相当于机子,CentOS相当于window装系统的光碟,xshell相当于解释器
新建虚拟机
然后等待系统安装
然后重启即可
查看自己的ip地址
点击编辑 -> 虚拟网络编辑器
点击NAT设置
留意子网IP与子网掩码
右键WiFi图标,点击网络设置
右键属性
点击右下角的NAT,先断开再连接
重启后,进入系统, 用户名为root,密码为之前设置的那个,直接输入就行,他不会显示*的,因为防止别人知道你密码的长度
然后输入
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33
然后将DEVICE=ens33往下的改成
然后ESC
+ :
+ wq
+ Enter
然后重启即可
安装Xshell
基本上next就行,参考 https://zhuanlan.zhihu.com/p/196664911
然后进入Xshell的窗口,先ping刚才的ip地址,如果能ping通就连接,输入
ssh root@192.168.xxx.xx
然后会弹出一个窗口,输密码即可
Redis
- Redis(Remote Dictionary Server 远程字段服务)是一个开源的使用ANSI C语言编写、支持网 络、内存亦可持久化的key-value数据库,并提供多种语言的API。
- Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、 zset(sorted set --有序集合)和hash。这些数据结构都支持push/pop、add/remove及取交集并 集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的 排序。为了保证效率,数据都是缓存在内存中,Redis会周期性的把更新的数据写入磁盘或者把修 改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
- Redis提供了java、C/C++、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等客户 端,使用很方便。
Redis官方网址:https://redis.io/
在Xshell连接到虚拟机后,依次输入下列指令
cd /opt
wget https://download.redis.io/releases/redis-6.2.6.tar.gz # 下载
tar -xf redis-6.2.6.tar.gz # 解压
cd redis-6.2.6/
ls
yum install gcc* -y # 安装c语言 因为redis是c语言开发的
make # 开始编译安装包
make install
cd /usr/local/bin
ls
发现与redis有关的东西都装在了这里,他们分别的作用是
- redis-benchmark:Redis自带的基准性能测试工具
- redis-check-aof:对有问题的 AOF 文件进行修复,AOF和RDB文件后面会说明
- redis-check-rdb:对有问题的 RDB文件进行修复
- redis-sentinel:Redis集群使用
- redis-cli:客户端
- redis-server:服务器启动
前台启动
会占用一个shell,这个shell什么都干不了,只能跑服务
./redis-server
当看到下图时表明服务启动成功
新开一个Xshell连接上虚拟机,然后输入redis-cli,如果能进到6379的端口号,就表明成功启动
后台启动
如果刚才选择了前台启动,那么Ctrl + C
退出
- 拷贝redis-6.2.6目录中的redis.conf文件到其他目录
mkdir /usr/local/myredis
cp /opt/redis-6.2.6/redis.conf /usr/local/myredis/redis.conf
设置/usr/local/myredis/redis.conf文件中的daemonize属性,由no改为yes
yum install vim -y # 装一个vim方便编辑
vim redis.conf # 进入配置文件
:set number # 设置行号
i
找到daemonize属性,由no改为yes,最后Esc
+ :
+ wq
在/usr/local/bin下执行
cd /usr/local/bin
./redis-server /usr/local/myredis/redis.conf
./redis-cli