目录
一、Redis的介绍
1、定义: Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区
2、用途:1. 数据库 2. 缓存
3、应用场景:
3.1热点数据加速查询(主要场景),如热点商品、热点信息等访问量较高的数据
3.2即时信息查询,如公交到站信息、在线人数信息等
3.3时效性信息控制,如验证码控制、投票控制等
3.4分布式数据共享,如分布式集群架构中的session分离消息队列
二、Redis的原理
接下来我将用一张图为大家讲解Redis的工作原理:
大家可以想一下,在每年的双十一以及双十二中,淘宝平台的访问量以及商品的浏览量是非常大的,大的几乎难以让人想象,这时候数据就会出现宕机(意思可以认为是死机)的现象,这时总数据库有两个做法,一种是生产集群数据库,减少自己的压力,
另一种做法就是使用Redis缓存,首先服务器先到缓存中拿取数据,如果缓存中有数据的话就将数据取出,没有数据的话,Redis就到数据库中取到数据,并且会考虑这是不是自己想要的数据,如果要的话就会取到,不要的话就不会取用,取用了之后供访问者使用。
三、Redis的安装
1、下载Redis压缩包,解压redis
2、安装gcc
3、编译redis
4、检测安装情况
5、修改redis.conf文件
6、启动redis
7、测试redis启动是否成功
8、配置成系统服务
9、重载系统服务
10、启动redis
1、下载Redis压缩包,解压redis
$ tar -zxvf redis-5.0.0.tar.gz -C /usr/local/
$ tar -zxf redis-5.0.0.tar.gz -C /usr/local/
-zxf 静默解压方式
$ cd redis-5.0.0(这里为压缩包的版本)
2、安装gcc
yum install gcc
3、编译redis
make
4、检测安装情况(注意:如果在这一步出现了报错了,在此时就要执行一下命名,yum install -y tcl-devel,make distclean两个命名分开执行)如下图所示:
make install
5、修改redis.conf文件(在这里需要注意的是,这里修改要修改三处,都是在redis.conf文件中,)
将daemonize no 改为 daemonize yes (在136行)
将 NETWORK 下 bind 127.0.0.1 注释掉(在55行)
并将 protected-mode yes 改为 protected-mode no;(在88行)
6、启动redis
查看redis进程:ps -ef | grep redis
杀掉redis进程:kill -9 进程pid
7、测试redis启动是否成功
ping
8、配置成系统服务
新建redis.service文件,配置成系统服务
vi /usr/lib/systemd/system/redis.service(新建之后就将redis.service中的内容copy到上述文件夹中(下列文字中红色字为自己创建的路径 我自己的路径如下图所示)
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target[Service]
Type=forking
ExecStart=/lky/redis-5.0.0/src/redis-server /lky/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
)这里拓展一下,vi是指新建一个文件夹,还可以进行编辑
而vim不新建文件夹,但是可以进行编辑
9、重载系统服务
systemctl daemon-reload
10、启动redis
systemctl start redis #启动redis服务
systemctl stop redis #停止redis服务
systemctl status redis #查看redis状态
systemctl restart redis #重启redis服务
systemctl enable redis #注册服务
systemctl disable redis #注销服务
四、Redis的基本命名
首先要进入到redis客户端:redis-cli -h 127.0.0.1 -p 6379(redis端口号) -a 123456(密码)
1、redis支持五种数据类型
string(字符串)hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
2、基本命名:
1、ttl key查看当前过期时间
2、type key 查看当前键的类型
3、exists key 是否存在这个键
4、expire key seconds设置键过期时间
5、select n 选择数据库
6、keys * 查看所有键
7、flushall 清空所有内容
8、flushdb 清空当前库
3、string字符串:
1、常用命名:
set key //保存
get key //获取
type key //查看类型
keys *或keys key //查看所有或者指定的keyappend key value 追击内容
incr key进行自增+1
decr key进行自减-1
incrby/decrby key increment 指定长度变化
getrange key start end指定返回取值
setex key second value 设置过期时间
setnx key value key 不存在创建,存在则创建失败
mset key1 v1 key2 v2 key3 v3 批量创建key
msetnx key1 v1 key2 v2 key3 v3 msetnx原子性操作,要么一起成功,要么一起失败
2、常用使用场景:
2.1缓存结构体信息:存储JSON数据
2.2计数功能:实时计数统计场景,库存场景,限流计数
2.3session共享
4、hash哈希类型:
1、常用命名:
键值对对象,类似HashMap,命名都是以h开头
hset key filed value 设置hash对象的属性键值对
HGET key field 获取对应键的属性值
HGETALL key 获取该键盘上所有属性
HEXISTS key field 判断属性是否存在
HMSET key field value [field value]多属性赋值
HSETNX key field value不存在则赋值
5、list链表(双向链表)
1、常用命名:
有序的value可以重复,可以通过下标取出对应的value值
list类型的前后插入和删除速度非常快的,但是随机定位速度非常慢
1、lpush key value [value ...]
2、lpop key 从左边取值(取完值后该值就消失了)
3、rpush key value [value ....]从右边值
4、rpop key 从右边拿出值
5、遍历操作: lrange key start stop 从左边开始遍历
2、常用使用场景:
6、set集合
1、set集合介绍:
1、不允许有重复的元素
2、集合中的元素是无序的,不能通过索引下标获取元素
3、支持集合间的操作,可以取多个集合取交集、并集,差集
2、常用命名:
1、命名都是以s开头
2、sadd key member [member ...]添加值
3、smembers key 拿值
4、sismember key member 判断该值是否存在
5、srem key member [member...] 移除值
6、scard key 查看长度
3、常用使用场景:
7、zset有序集合
1、zset有序集合介绍:
类似于java的sortedSet和hashmap的结合体,一方面它是一个set啊,保证了内部value的唯一性,另一方面他可以给每一个value赋予一个score,代表这个value的排序权重,zset内部是通过跳跃列表这种书数据结构来实现的,因为zset要支持随机的插入和删除,所以不能使用数组结构,而需要改成普通链表数据结构,zset需要根据score进行排序,所以每次插入或者删除值都需要进行先在链表上查找定位
2、常用命名:
1、zadd key score member [score] [member]添加内容
2、zrange key start stop [withscores] 遍历内容
3、zscore key member 查看score权重
3、常用使用场景: