目录
1、Redis简介
1)、Redis是什么?
(1)全称:Remote Dictionary Server(远程字典服务器)。是完全开源免费的,用C语言编写 的, 遵守BSD协议。是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL 数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。
(2)Redis 与其他 key - value 缓存产品有以下三个特点 、
i)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
ii)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结 构的存储
iii)Redis支持数据的备份,即master-slave模式的数据备份
2)、Redis能干嘛?
(1)内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
(2)取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
(3)模拟类似于HttpSession这种需要设定过期时间的功能
(4)发布、订阅消息系统
(5)定时器、计数器
3)、可以从哪里去下载Redis?
(1)Http://redis.io/
(2)Http://www.redis.cn/
4)、使用Redis进行的多种操作
(1)数据类型、基本操作和配置
(2)持久化和复制,RDB/AOF
(3)事务的控制
(4)复制
5)、Redis与其他数据库和软件的对比
名称 | 类型 | 数据存储选项 | 查询类型 | 附加功能 |
---|---|---|---|---|
Redis | 使用内存 存储(in-memory) 的非关系 数据库 | 字符串、列表、集 合、散列表、有序集 合 | 每种数据类型都 有自己的专属命 令,另外还有批 量操作(bulk operation)和不 完全(partial) 的事务支持 | 发布与订阅,主从 复制(master/slave replication),持 久化,脚本(存储 过程,storedprocedure) |
memcached | 使用内存 存储的键 值缓存 | 键值之间的映射 | 创建命令、读取 命令、更新命 令、删除命令以 及其他几个命令 | 为提升性能而设的 多线程服务器 |
MySQL | 关系数据 库 | 每个数据库可以包含 多个表,每个表可以 包含多个行;可以处 理多个表的视图 (view);支持空间 (spatial)和第三方 扩展 | SELECT、 INSERT、 UPDATE、 DELETE、函数、 存储过程 | 支持ACID性质 (需要使用 InnoDB),主从 复制和主主复制 (master/master replication) |
PostgreSQL | 关系数据 库 | 每个数据库可以包含 多个表,每个表可以 包含多个行;可以处 理多个表的视图;支 持空间和第三方扩 展;支持可定制类型 | SELECT、 INSERT、 UPDATE、 DELETE、内置函 数、自定义的存 储过程 | 支持ACID性质, 主从复制,由第三 方支持的多主复制 (multi-master replication) |
MongoDB | 使用硬盘 存储(on-disk)的非 关系文档 存储 | 每个数据库可以包含 多个表,每个表可以 包含多个无 schema(schema- less)的BSON文档 | 创建命令、读取 命令、更新命 令、删除命令、 条件查询命令等 | 支持map-reduce操作,主从复制, 分片,空间索引 (spatial index) |
2、Redis的安装部署
方法一:在线yum进行安装
http://rpmfind.net/可以在该网站站搜索需要的Redis包
我选择的是redis-6.2.7-1.el7.remi.x86_64.rpm
1)、在本地中安装Redis
[root@node1 ~]#
yum localinstall http://rpmfind.net/linux/remi/enterprise/7/remi/x86_64/redis-6.2.7-1.el7.remi.x86_64.rpm
2)、开启Redis并查看端口是否打开
[root@node1 ~]# systemctl enable --now redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
[root@node1 ~]# netstat -lnupt | grep :6
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 1639/redis-server 1
tcp6 0 0 ::1:6379 :::* LISTEN 1639/redis-server 1
udp 0 0 0.0.0.0:68 0.0.0.0:* 1468/dhclient
3)、开启之后以命令redis-cli
并可以进行登录
[root@node1 ~]# redis-cli
127.0.0.1:6379> quit
[root@node1 ~]# id redis
uid=998(redis) gid=996(redis) groups=996(redis)
方法二:通过源码安装Redis
1)、wget下载Redis源码包
[root@node2 ~]# wget -c http://download.redis.io/releases/redis-6.2.7.tar.gz
2)、解压到指定目录
[root@node2 ~]# tar xf redis-6.2.7.tar.gz -C /usr/local/src/
3)、进入Redis目录安装相应包和make
[root@node2 ~]# cd /usr/local/src/redis-6.2.7/
[root@node2 redis-6.2.7]# yum install -y gcc gcc-c++ make -y
[root@node2 redis-6.2.7]# make #注意make操作一定要进入到Redis目录中进行
[root@node2 redis-6.2.7]# make install
4)、创建目录与用户、用户组和复制配置文件
[root@node2 redis-6.2.7]# mkdir -p /etc/redis
[root@node2 redis-6.2.7]# cd
[root@node2 ~]# cp /usr/local/src/redis-6.2.7/redis.conf /etc/redis/
[root@node2 ~]# id redis
id: redis: no such user
[root@node2 ~]#
[root@node2 ~]# groupadd -r redis
[root@node2 ~]# grep redis /etc/group
redis:x:996:
[root@node2 ~]# useradd redis -r -u 996 -g 996 -c "Redis Database Server" -d /var/lib/redis -s /sbin/nologin
[root@node2 ~]# id redis
uid=996(redis) gid=996(redis) groups=996(redis)
5)、设定目录用户和用户组
[root@node2 ~]# mkdir -p /var/lib/redis
[root@node2 ~]# ll -d /var/lib/redis/
drwxr-xr-x 2 root root 6 May 15 22:47 /var/lib/redis/
[root@node2 ~]#
[root@node2 ~]# chown -R redis:redis /var/lib/redis/
[root@node2 ~]# vim /etc/redis/redis.conf
[root@node2 ~]# ll -d /var/lib/redis/
drwxr-xr-x 2 redis redis 6 May 15 22:47 /var/lib/redis/
[root@node2 ~]# chmod 750 /var/lib/redis/
[root@node2 ~]# ll -d /var/lib/redis/
drwxr-x--- 2 redis redis 6 May 15 22:47 /var/lib/redis/
6)、在该配置文件下配置服务脚本
[root@node2 ~]# vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --daemonize no --supervised systemd
ExecStop=/usr/bin/kill -9 `pidof redis-server`
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
7)、运行服务脚本开启服务通过命令redis-cli
登录即可
[root@node2 ~]# systemctl daemon-reload
[root@node2 ~]# systemctl restart redis
[root@node2 ~]# systemctl status redis.service
● redis.service - Redis persistent key-value database
Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2022-05-15 23:03:46 CST; 6s ago
Main PID: 6410 (redis-server)
CGroup: /system.slice/redis.service
└─6410 /usr/local/bin/redis-server 127.0.0.1:6379
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 * Running mo...9.
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 # WARNING: T...8.
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 # Server ini...ed
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 # WARNING ov...t.
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 * Loading RD....7
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 * RDB age 0 ...ds
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 * RDB memory...Mb
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 # Done loadi...0.
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 * DB loaded ...ds
May 15 23:03:46 node2 redis-server[6410]: 6410:M 15 May 2022 23:03:46.571 * Ready to a...ns
Hint: Some lines were ellipsized, use -l to show in full.
[root@node2 ~]# redis-cli
127.0.0.1:6379> quit