1、什么是Redis
Redis全称Remote Dictionary Server(即远程字典服务) ,它是一个基于内存实现的键值型非关系数据库;Redis官网(Redis - The Real-time Data PlatformDevelopers love Redis. Unlock the full potential of the Redis database with Redis Enterprise and start building blazing fast apps.https://redis.io/)
2、特点以及优势
特点:
-
Redis 不仅可以将数据完全保存在内存中,还可以通过磁盘实现数据的持久存储;
-
Redis 支持丰富的数据类型,包括 string、list、set、zset、hash 等多种数据类型,因此它也被称为“数据结构服务器”;
-
Redis 支持主从同步,即 master-slave 主从复制模式。数据可以从主服务器向任意数量的从服务器上同步,有效地保证数据的安全性;
-
Redis 支持多种编程语言,包括 C、C++、Python、Java、PHP、Ruby、Lua 等语言。
优势:
-
性能极高:Redis 基于内存实现数据存储,它的读取速度是 110000次/s,写速度是 81000次/s;
-
多用途工具: Redis 有很多的用途,比如可以用作缓存、消息队列、搭建 Redis 集群等;
-
命令提示功能:Redis 客户端拥有强大的命令提示功能,使用起来非常的方便,降低了学习门槛;
-
可移植性:Redis 使用用标准 C语言编写的,能够在大多数操作系统上运行,比如 Linux,Mac,Solaris 等。
应用场景:
-
缓存:合理的使用 缓存 能够明显加快访问的速度,同时降低数据源的压力。这也是
Redis
最常用的功能。Redis
提供了 键值过期时间(EXPIRE key seconds
)设置,并且也提供了灵活控制 最大内存 和 内存溢出 后的 淘汰策略。 -
排行榜:每个网站都有自己的排行榜,例如按照 热度排名 的排行榜,发布时间 的排行榜,答题排行榜 等等。
Redis
提供了 列表(list
)和 有序集合(zset
)数据结构,合理的使用这些数据结构,可以很方便的构建各种排行榜系统。 -
计数器:计数器在网站应用中非常重要。例如:点赞数*加
1
,浏览数 *加1
。还有常用的 限流操作,限制每个用户每秒 访问系统的次数 等等。Redis
支持 计数功能(INCR key
),而且计数的 性能 也非常好,计数的同时也可以设置 超时时间,这样就可以实现限流。 -
社交网络:赞/踩,粉丝,共同好友/喜好,推送,下拉刷新等是社交网站必备的功能。由于社交网站 访问量通常比较大,而且传统的数据库 不太适合保存这类数据,
Redis
提供的 数据结构 可以相对比较容易实现这些功能。 -
消息队列:
Redis
提供的 发布订阅(PUB/SUB
)和阻塞队列 的功能,虽然和专业的消息队列(RocketMQ/RabbitMQ,MQ全称:Message Queue)比,还不够强大,但对于一般的消息队列功能基本满足
3、安装与配置(Linux版)
注:windows安装文档路径:Windows 下安装和配置 Redis (图文教程)-阿里云开发者社区Windows 下安装和配置 Redis (图文教程)https://developer.aliyun.com/article/1395346
3.1、下载Redis.tar版本(官网:Redis - The Real-time Data Platform)
3.2、上传解压并安装gcc
# 切换目录
cd /usr/local/mytools
# 上传
rz redis-6.2.1.tar.gz
# 解压
tar -zxf redis-6.2.1.tar.gz -C /usr/local
#安装gcc
yum -y install gcc
3.3、编译和查看安装目录
#需要提前切换到redis解压好的目录下
make && make install
#如下附图
#查看安装目录
cd /usr/local/bin
#查看下面文件目录
ll
目录介绍:
-
redis-benchmark:性能测试工具,可以在自己本子允许,看看自己本子性能如何
-
redis-check-aof:修复有问题的AOF文件
-
redis-check-dump:修复有问题的dump.rdb文件
-
redis-sentinel:redis集群使用
-
redis-server:redis服务器启动命令
-
redis-cli:客户端,操作入口
3.4、后端启动跟测试
使用vi或者vim命令修改/usr/local/redis-6.2.1/redis.conf
中的配置,将后台启动设置daemonize改为yes,如下:
启动(注非常重要)
#需要在/usr/local/bin目录下执行如下语句,启动redis服务(版本号不跟我一致的不要直接扣)
redis-server /usr/local/redis-6.2.1/redis.conf
查看进程
ps -ef | grep redis
关闭进程
# 方式一:
kill -9 pid
# 方式二:
redis-cli shutdown
执行 redis-cli 即可进入redis命令窗口,然后就可以执行redis命令了。
redis-cli
测试
[root@localhost bin]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
3.5、系统服务自启动配置
# 切换到指定目录
cd /usr/lib/systemd/system/
#编辑指定文件
vim redis.service
#在文件中输入如下代码
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
#修改redis-server和redis.conf的路径
ExecStart=/填你的文件路径/redis-5.0.0/src/redis-server /填你的文件路径/redis-5.0.0/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 重载服务
systemctl daemon-reload
# 自启动服务
systemctl enable redis
# 重启服务
systemctl restart redis
vim编辑的文档一定要在命令模式下保存wq!!!!!
vim编辑的文档一定要在命令模式下保存wq!!!!!
vim编辑的文档一定要在命令模式下保存wq!!!!!
4、Redis的数据类型
Redis默认端口6379,默认16个数据库,类似数组的下标从0开始,初始默认使用0号。可使用select命令切换数据库:
select index
-
String(字符串)
String 是 Redis 最基本的数据类型。字符串是一组字节,在 Redis 数据库中,字符串具有二进制安全(binary safe)特性,这意味着它的长度是已知的,不由任何其他终止字符决定的,一个字符串类型的值最多能够存储 512 MB 的内容。
-
Hash(哈希表)
Redis hash是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似于java里面的Map<String,Object>
-
List(列表)
Redis List 中的元素是字符串类型,其中的元素按照插入顺序进行排列,允许重复插入,最多可插入的元素个数为 2^32 -1 个(大约40亿个),可以添加一个元素到列表的头部(左边)或者尾部(右边)。
-
Set(集合)
Redis Set 是一个字符串类型元素构成的无序集合。在 Redis 中,集合是通过哈希映射表实现的,所以无论是添加元素、删除元素,亦或是查找元素,它们的时间复杂度都为 O(1)。
-
Zset(有序集合)
Redis zset 是一个字符串类型元素构成的有序集合,集合中的元素不仅具有唯一性,而且每个元素还会关联一 个 double 类型的分数,该分数允许重复。Redis 正是通过这个分数来为集合中的成员排序。
5、Redis相关操作
5.1、String
set key #保存
get key #获取
type key #查看类型
keys *或keys key #查看所有或者指定的key
5.2、Hash
hset key field1 value1 [field2 value2] #同时将多个field-value设置到哈希表key中
hget key field #获取指定的字段值
hdel key field #删除指定的字段值
hgetall key #查询指定key的所有字段
hexists key field #查询指定key中的字段是否存在
hlen key #获取指定key中的长度
5.3、list
lpush key value1 value2 value3 #将一个或多个值插入到列表头部
llen key #获取列表的长度
lindex key index #根据索引获取列表中的元素
lrange key start sop #查看指定范围内的元素
5.4、Set
sadd key value1 [value2] #向集合添加一个或多个元素
scard key #获取集合中的元素数量
sscan key cursor [MATCH pattern] [COUNT count] #迭代集合中的元素
exists key #是否存在