Redis缓存中间件

1、传统中间件

nginx,web服务器

php,转发动态请求

tomcat,既是web页面,也可以转发动态请求

springboot,自导tomcat

数据库都不支持高并发,一旦访问量激增,数据库很快就会崩溃

2、Redis简介

Redis:远程字典服务器

是开源的,c语言写的nosql数据库

Redis是基于内存运行,所有的数据不是保存在硬盘而是内存

持久化的功能——定期或者人为的把数据保存到硬盘

3、Redis的作用

减轻数据库的压力

Redis不单单是一个缓存工具,也是一个数据库

是非关系型数据库,nosql(not only sql 不仅仅是sql),键值对形式key value,数据的类型不是定义好的类型

4、Redis的优点

1、极高的读写速度,读速度可以达到110000次/s,写速度81000次/s

2、支持丰富的数据类型,键值对可以定义多种数据类型(string、list、hash、set)

3、支持数据持久化,把内存当中的数据保存到硬盘

4、原子性,Redis的所有操作都是原子性

5、支持主从模式和高可用模式(哨兵模式),以及集群

5、应用场景

Redis基于内存运行的数据库,缓存是最常应用的场景

其他应用场景:排行榜、计数器、存储关系、实时分析记录,日志系统

6、缓存

6.1概念

缓存是一种用于存储临时数据副本的技术,目的是提高访问速度和性能

缓存通常位于数据的访问路径上,数据的必经之路,可以在不直接访问原始数据的情况下,直接获取数据

6.2缓存的应用场景

web缓存、数据库缓存、对象缓存(大数据应用)

7、Redis的安装

systemctl stop firewalld
setenforce 0

#安装依赖环境
yum -y install gcc gcc-c++ make

#解压
tar -xf redis-5.0.7
cd redis-5.0.7/

#指定4个cpu进行安装
make -j 4

#指定安装路径
make PREFIX=/usr/local/redis install
cd utils

#直接运行脚本
./install_server.sh
一直回车,在"select the redis executable path"这一行输入/usr/local/redis/bin/redis-server

#软连接
ln -s /usr/local/redis/bin/* /usr/local/bin

#查看端口是否开启
netstat -antp | grep 6379

#配置主机
vim /etc/redis/6379.conf
70行添加ip bind 127.0.0.1 192.168.230.21

#开启redis
/etc/init.d/redis_6379 restart

#查看状态
/etc/init.d/redis_6379 status

#查看日志
tail -f /var/log/redis_6379.log

#进入redis
redis-cli -h 192.168.230.21 -p 6379 
-h:指定ip地址
-p:指定端口
-a:密码(没有密码可以不加)
redis-cli:命令行工具
redis-server start/stop/restart:控制redis
redis-benchmark:检测redis在本机的运行效率
redis-check-aof:修复aof持久化的文件
redis-check-rdb:修复rdb持久化的文件

redis-benchmark -h 192.168.230.21 -p 6379 -c 100 -n 100000
#向redis的主机模拟发送100个并发连接,同时发送十万个请求

redis-benchmark -h 192.168.230.21 -p 6379 -q -d 100
#模拟存储100个数据包的性能测试

8、Redis基础数据类型

8.1string

字符串

是redis的基础类型,最大能够存储512MB的数据,数字、图片等都是默认string类型

#创建数据
set test1 10

#获取数据
get test1

#查看保存的键值对
keys *

#判断键值对是否存在
exists test1(存在返回1,不存在返回0)

#查看键值对值的类型
type test1

#删除键值对
del  test1

#改键名
rename test1(旧名) xy102(新名)

#添加密码
config set requirepass 123456

#密码登录
auth 123456

#对键值进行追加,如果没有直接添加
append

#值自加1
incr

#值自减1
decr

#指定加值
incrby

#指定加10
incrby mykey 10 

#指定减10
decrby mykey 10


#设置键名mykey,存活时间为15秒,值为hello,到期之后键从当前库删除
setex mykey 15 hello

#查看
ttl mykey

#当前库中有几个键值对
dbsize

#查看有几个库,一共16个库,第一个库从0开始,最后一个库15
config get databases

#切换库
#每个库都是独立的,彼此之间互不影响
select 

#移动键值对到1库
move mykey 1

#清空当前库
flushdb

#清空所有库
flushall

#一次性创建多个键值对
mset

#一次性查看多个键值对
mget

8.2list

列表

#创建list类型
lpush
lpush mykey a b c d(顺序是d c b a)

rpush 
rpush mykey a b c d(顺序是a b c d)

#查看列
lrange

#获取索引0到-1的元素,索引是从0开始的,-1是列表当中的最后一个元素
lrange mykey 0 -1

#添加列(从头插入元素)
lpushx

#移除元素,从第一个开始移除
lpop

#查看有几个元素
llen

#删除2个等于a的值(返回1表示成功,返回0表示失败)
lrem mykey 2 a

#用索引打印指定的位置
lindex

#根据索引位置进行值的替换
lset 
#将索引为5的元素替换成10
lset mykey 5 10


#指定的值进行前后替换(在10的前/后插入9)
linsert mykey before 10 9
linsert mykey after 10 9

8.3hash

散列,键对集合

用来存储对象,对象类别和ID构成键名

hash存储的空间很小,占用的内存和持久化后的磁盘空间都很少

hash是一个键值对包含多个对象和对象的值,对象名不可重复

#创建hash
hset myhash id 1

#查看
hget myhash id
myhash就是一个hash值,一个hash值可以存储4294967295个键值对

#查看存储的对象
hlen myhash

#删除
hdel myhash id

#一次查看多个对象
hmget myhash id1 id2

#查看所有
hgetall myhash

#查看对象名
hkeys myhash

#查看对象对应的值
hvals myhash

#添加对象
hsetnx myhash id1 1

8.4set

集合,不重复的无序集合

元素类型只能是string,无序集合当中元素具有唯一性,不允许重复

应用场景:set的数据来追踪唯一性的数据,比如ip地址,或者根据客户的id区分不同客户购买的同一产品

#创建
sadd myset a b b c

#查看元素
smembers myset

#添加
sadd myset a d e

#获取元素的个数
scard myset

#随机获取一个元素
srandmember myset

#指定删除
srem myset a

#随机删除
spop myset

#将集合1的数据移到集合2中
smove myset myset2 a(将myset中的a移到myset2中)

8.5zet

有序集合

元素类型都是string,元素唯一不能重复

每个元素都会关联一个double类型的分数score(表示权重),通过权重的大小进行排序,权重可以相同

#创建
zadd myzet 1 "one" 2 "two" 3 "three"(1 2 3为权重)

#查看
zrange myzet 0 -1 withscores

#获取权重大于等于2,小于等于zrangebyscore myzet 2 5

#按照索引倒序排列
zrevrange myzet 1 3

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值