NOSQL
NOSQL: 是指关系型数据库的统称 Redis就是其中最常用的一种NOSQL型数据库
NOSQL数据库与SQL数据库有什么区别?
- 是否遵守sql标准
- 不支持ACID(数据库四大特性)
- 远超关系型数据库的性能
什么情况下使用NOSQL:
- 对数据高并发的读写
- 海量数据的读写
- 需要高扩展的数据
也就是说,当数据量特别大,并且需要频繁操作的时候,关系型数据库有可能承受不住压力而奔溃,此时就可以采用性能更好的非关系型数据库
什么情况下不使用NOSQL
- 当需要使用事务的情况下
- 当我们需要结构化查询数据的时候
常见的NOSQL数据库:
- Redis
- MongoDB
- HBase
Redis支持非常高的读写速度,达到一秒钟可以读几十万次,但是redis是一个key-value型数据库,跟我们的map集合一样,只能根据key来获取value,不能实现任何条件查询的操作,所以redis无法代替我么们的关系型数据库使用,但是由于他的读写性能非常高,所以用来当作关系型的缓存层使用(也是项目中常见的使用方式),消息队列,分布式管理事务,分布式注册中心
安装Redis
解压redis压缩包
[root@Test1 local]# tar -zxvf redis-5.0.3.tar.gz
因为 Redis
的底层依赖 c 所以 需要下载 gcc 依赖
[root@Test1 local]# yum install gcc
编译安装Redis
[root@Test1 redis-5.0.3]# make MALLOC=libc
[root@Test1 redis-5.0.3]# cd src && make install
Redis启动服务的三种方式
当启动完成后 需要一直代开窗口 不能进行任何操作 非常不方便
-
后台启动
后台启动模式默认是关闭的 所以需要修改配置文件 redis.conf将
daemonize no改为yes
然后启动的时候指定根据配置文件启动
[root@Test1 redis-5.0.3]# src/redis-server redis.conf # 查看redis相关的端口 通过关闭端口来关闭服务 [root@Test1 ~]# ps -aux | grep redis [root@Test1 redis-5.0.3]# kill 6994 [root@Test1 redis-5.0.3]# ps -aux | grep redis
-
设置redis服务开机自启动*
创建自启脚本
# 创建脚本文件进入编辑 [root@Test1 init.d]# vim /etc/init.d/redis ....redis具体内容见在下边..... # 给脚本添加权限 [root@Test1 etc]# chmod 755 /etc/init.d/redis # 启动脚本运行开启 [root@Test1 etc]# /etc/init.d/redis start Starting Redis server... 7032:C 02 Jul 2021 17:11:43.790 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 7032:C 02 Jul 2021 17:11:43.790 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=7032, just started 7032:C 02 Jul 2021 17:11:43.790 # Configuration loaded Redis is running... # 将启动脚本添加到服务列表 [root@Test1 etc]# chkconfig --add /etc/init.d/redis # 设置开机启动 [root@Test1 etc]# chkconfig redis on
redis启动脚本内容
#!/bin/sh # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database PATH=/usr/local/bin:/sbin:/usr/bin:/bin REDISPORT=6379 EXEC=/usr/local/bin/redis-server REDIS_CLI=/usr/local/bin/redis-cli PIDFILE=/var/run/redis.pid CONF="/usr/local/redis-5.0.3/redis.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $REDIS_CLI -p $REDISPORT SHUTDOWN while [ -x ${PIDFILE} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; restart|force-reload) ${0} stop ${0} start ;; *) echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2 exit 1 esac
进入Redis linux 客户端
[root@Test1 src]# ./redis-cli
127.0.0.1:6379> set name 憨憨
OK
127.0.0.1:6379> get name
"\xe6\x86\xa8\xe6\x86\xa8"
127.0.0.1:6379> quit
出现乱码问题则需要执行下面命令即可
[root@Test1 redis-5.0.3]# ./src/redis-cli --raw -a 123456
127.0.0.1:6379> get name
憨憨
成功获取到name的值
使用redis客户端 Redis Desktop Manager连接redis配置
打开配置文件修改一下内容
[root@Test1 redis-5.0.3]# vim redis.conf
- 将
redis.conf
文件 69行 的 bind 127.0.0.1 改成 0.0.0.0 - 将
redis.conf
文件 88行 的 protected-mode yes 改成protected-mode no - 将
redis.conf
文件 136行 的daemonize no 更改为daemonize yes(开启redis后台运行) - 将
redis.conf
文件 507行requirepass 123456 - 执行关闭防火墙命令 systemctl stop firewalld.service
然后用Redis Desktop Manager进行连接即可