目录
一、Redis的介绍
二、Redis的原理
三、Redis的安装
四、Redis的基本命名
一、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 //查看所有或者指定的key
? ? ? ? ? append 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、常用使用场景:
?
|