redis 缓存中间件 缓存数据库
nginx web服务
php 转发动态请求
tomcat web页面,也可以转发动态请求
springboot 自带tomcat
redis 也是一个数据库 不单单是一个缓存工具
redis 非关系型数据库 nosql not only sql 不仅仅是sql
键值对形式
key value
test1=test2
test1=10
数据的类型不是定义好的类型
test1=10 string
redis简介:
redis 远程字典服务器
键值对
开源的,c语言写的nosql数据库
redis基于内存运行,所有的数据不是保存在硬盘,而是内存
持久化------定期或者人为的把数据保存在硬盘。
redis的优点:
1、极高的读写速度,读速度可以达到11000次/s 写81000次/S
2、支持丰富的数据类型,键值对可以定义多种数据类型 string list hash set
3、支持数据持久化,内存当中的数据保存到磁盘
4、原子性,redis所有操作都是原子性的
5、支持主从模式和高可用模式(哨兵模式),以及集群
redis基于内存运行的数据库,缓存是最常应用的场景
排行榜
计数器
存储关系
实时分析记录,日志系统
缓存的概念
缓存是一种用于存储临时数据副本的技术。目的就是提高访问速度和性能。
缓存通常位于数据的访问路径上,数据的必经之路。可以在不访问原始数据的情况下,可以直接获取数据。
缓存的应用场景
web缓存
数据库缓存
对象缓存(大数据应用)
redis-cli -h 192.168.233.10 -p 6379
-h 指定ip地址
-p 指定端口
-a 密码 (没有密码可以不加)
redis-cli 命令行工具
redis-server start stop restart 控制redis
redis-benchmark 检测redis在本机的运行效率
redis-check-aof 修复aof持久化的文件
reids-check-rdb 修复rdb持久化的文件
redis-benchmark -h 192.168.233.41 -p 6379 -c 100 -n 100000
#向redis的主机模拟发送100个并发连接,同时发送十万个请求测试
redis-benchmark -h 192.168.233.41 -p 6379 -q -d 100
#模拟存储100个数据包的性能测试
redis数据库的常用命令
基础数据类型:
string 字符串
lis 列表
hash 散列,键值对集合
set 集合 不重复的无序集合
zet 集合,有序集合
redis-cli -h 192.168.233.41 -p 6379
#进入redis
set test1 10
#set 创建数据
get test1
#get 获取数据
keys *
#查看当前库中所有键值
exists test1
#查看键值队是否存在,有返回1,没有返回0
config set requirepass 123456
#给redis设置密码
1.string类型
是redis的基础类型 最大能够存储512MB的数据数字,图片等等都是
append #追加
incr test1 #值自增1
decr test1 #值自减1
incrby test1 10 #指定增加10
decrby test1 10 #指定减少10
批量创建键值对
mset 键名1 值 键名2 值
mset key1 hello key2 world
#批量设置键
keys *
#查看键
mget 键名1 键名2
mget key1 key2
#同时打印多个键的值
2.列表 list 类型
创建列表
lpush 键名 值
lpush test1 a b c d 1 2 3
#创建列表 后面时内容,但是当中的元素还是string类型
lrange 键名 范围
lrange test1 0 -1
#查看列表中的数据(倒叙)
lindex 键名 索引下标
lindex test1 0
lindex test1 4
#根据索引下标打印数据
rpush 键名 值
rpush test1 1 2 3 4
#添加列表正序查看
lrange test1 0 -1
#正序查看
lrange test1 1 2
#指定范围查看
对列表插入值
lpushx 键名 值
lpushx test1 10
#共左插入
lrange 键名 范围
lrange test1 0 -1
#通过索引下标范围查看
rpushx test1 5
#从右插入
lrange test1 0 -1
#通过索引下标范围查看
删除列表内的值
lpop 键名
lpop test1
#从左边开始删
lrange test1 0 -1
#范围查看键值对内部的值
rpop 键名
rpop test1
#从右边开始删
lrange test1 0 -1
llen 键名
llen test1
#查询列表内的元素
lindex 键名 索引下标
lindex guoqi1 3
#指定索引下标查询
lrange test1 0 -1
linsert 键名 before 索引下标范围
linsert guoqi1 before 3 10
#在指定位置前插入数据
lrange test1 0 -1
3、 hash类型:hash类型用于存储对象,采用hash格式进行操作,占用磁盘空间少,而且一个hash可以存储4294967295个键值对
创建hash类型的数据
hset 键名 字段 值
hset test1 hello 10
#创建一个hash类型的数据
hget 键名 字段
hget test1 hello
#打印tall的值
hset 键名 字段 值
hset test1 luoyuhao 10
#添加1个字段
hmget 键名 字段 字段
hmget test1 hello luoyuhao
#批量打印字段
hset 键名 字段 值
hset test1 age 20
#再添加一个字段
hmget 键名 字段 字段 字段
hmget test1 luoyuhao hello age
#一次性打印多个字段
一次性创建多个值
hmset 键名 字段 值 字段 值 字段 值 字段 值
hmset test1 a 1 b 2 c 3 d 500
#一次性创建多个字段
hmget 键名 字段 字段 字段 字段
hmget test1 a b c d
#一次性打印多个名称和值
直接查看键值对的所有字段和值
hgetall 键名
hgetall zyg3
#查看键的字段和值
hkeys 键名
hkeys zyg3
#当前键值对的字段名
hvals 键名
hvals zyg3
#当前键值对的值
删除键值对
del zyg3
#删除键值对
4.set集合 无序集合
元素类型只能是string,无序集合当中元素具有唯一性,不允许重复
应用场景,set的数据来追踪唯一性的数据,比方说ip地址
或者根据客户的id区分不同客户购买的同一产品
sadd test1 a b b c创建集合
smembers test1查看集合中所有的值
scard test1 获取集合中集合的数量
srandmeber test1查看集合的个数
smove test1 test2 a 把test1集合中的a移动到test2,不能重复
5.有序集合
Sorted set zset 有序集合
元素类型都是string 元素唯一,不能重复
每个元素都会关联一个double类型的分数score(表示权重),通过权重的大小进行排序,权重可以相同。