基础介绍
中文网站:http://www.redis.cn/
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
学习网站:https://www.w3cschool.cn/redis/
1、什么是 Redis?
Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
(1)Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
(2)Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
(3)Redis 支持数据的备份,即 master-slave 模式的数据备份。
Redis 优势
(1)性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。
(2)丰富的数据类型 – Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及Ordered Sets 数据类型操作。
(3)原子 – Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC指令包起来。
(4)丰富的特性 – Redis 还支持 publish/subscribe, 通知, key 过期等等特性。
Redis 与其他 key-value 存储有什么不同?
(1)Redis 有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis 的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
(2)Redis 运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样 Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
2、Redis 的数据类型?
答:Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zsetsorted set:有序集合)。
我们实际项目中比较常用的是 string,hash 如果你是 Redis 中高级用户,还需要加上下面几种数据结构 HyperLogLog、Geo、Pub/Sub。
如果你说还玩过 Redis Module,像 BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。
3、使用 Redis 有哪些好处?
(1)速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是 O1)
(2)支持丰富数据类型,支持 string,list,set,Zset,hash 等
(3)支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4)丰富的特性:可用于缓存,消息,按 key 设置过期时间,过期后将会自动删除
服务端安装
在安装之前我们需要虚拟机VMware 并且安装了JDK和Tomcat
以防后期哪个步骤操作错误崩溃 我们先在虚拟机里面克隆一下装好Jdk,Tomcat,Mysql的版本
克隆中只有这一步比较重要就是创建完整的克隆
选择好路径后点击完整即可
克隆出来的虚拟机什么都和原版本的一样
可以输入几条命名查看一下是否可用
下载redis压缩包
1.这里安装有两种方式 一种是在线安装(成功率很低) 还有一种是离线安装 这里我们用离线安装
yum -y install wget 在线安装
wget http://download.redis.io/releases/redis-5.0.2.tar.gz 在网上下载安装包
接下来我们需要将下载好的离线文件放入虚拟机内存里面
2.好了之后我们安装redis的环境 gcc编译c的,因为redis是c编写的,所以我们先安装下gcc
yum install gcc-c++
下好之后y
安装好之后我们可以查看下redis
然后开始解压 tar -zxvf redis按个Tab自动补全
解压好了进入
cd redis-5.0.2/(进入目录)
然后再
Make(编译) 时间有点长可能需要3分钟左右的样子
看图好吧
3.开启守护进程,不开启的话,不能做其他操作
开启之前我们先把这个文件备份一下
备份完毕后进入到redis.conf里面去
vi redis.conf
改好了之后 要保存 Esc退出编辑 冒号:wq保存
然后再重新启动
./src/redis-server redis.conf
在这种状态下我们可以启动其他的服务
4.那么怎么检验我们是否成功了呢
./src/redis-cli
输入后Redis自带的有16个数据库
我们只需要输入select 就可以看到对应的数据库 默认是index 0
如果你想退出来输入Exit即可
Redis客户端安装
如何让Redis像MySql一样看的到呢 接下来用到我们另外一个工具
具体怎么下载看这篇帖子https://blog.csdn.net/weixin_33704234/article/details/85913521
下载好后得到这个安装包 安装也很简单 next next next 然后选安装路径 完成即可
接下来我们需要输入密码 但是密码我们又没有设置 所需需要更改
这是第一处 还有一处
搞定后我们重启服务 并重新登录
配置完成密码后,以后登录就密码按下面的命令进行登录
./redis-cli -h 127.0.0.1 -p 6379 -a 123456
接下来我们继续连接下 如果连接不上可能是防火墙的问题
开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
跟新防火墙规则
firewall-cmd --reload
防火墙列表
firewall-cmd --zone=public --list-ports
防火墙状态
systemctl status firewalld
启动防火墙
systemctl start firewalld
通过命令操作数据库
string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
#字符串
set name #保存
get name #获得
type name #查看类型
keys *
del name
#哈希(Hash),Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象
hset key attr1 value1 attr2 value2
hget key attr1
hgetall key
#列表(List)
lpush key value1 value2 value3 存值
lpop hobby 弹出最后一位
llen key 查看多少
lindex key index 查看第几位
lrange key start stop #stop可以为-1,到末尾的意思