redis缓存中间件
nginx web服务器 缓存数据库
php 转发动态请求
tomcat 即是web页面也可以转发动态请求
springboot 自带tomcat
redis也是一个数据库,不单单是一个缓存工具。
redis 非关系型数据库 nosql not only sql 不仅仅是sql。
键值对形式
ky value
test1 = test2
数据的类型不是定义好的类型。
test1=10 string
redis简介
redis 远程字典服务器
键值对
开源的,c语言写的nosql数据库
redis基于内存运行,所有的数据不是保存在硬盘,而是内存。
持久化的功能——定期或者人为的把数据保存到硬盘。
redis优点
1、极高的读写速度,读速度可以达到110000次/秒 写速度81000次/秒
2、支持丰富的数据类型,键值对可以定义多种数据类型 string list hash set
3、支持数据持久化,内存当中的数据保存到磁盘
4、原子性,redis的所有操作都是原子性。
5、支持主从模式和高可用模式(哨兵模式),以及集群。
redis基于内存运行的数据库,缓存是最常应用场景。
排行榜
计数器
存储关系
实时分析记录,日志系统。
缓存的概念
缓存是一种用于存储临时数据副本的技术。目的就是提高访问速度和性能。
缓存通常位于数据访问的路径上,数据的必经之路。可以在不直接访问原始数据的情况下,可以直接获取数据。
缓存的应用场景
web缓存
数据库缓存
对象缓存(大数据应用)
redis-cli -h192.168.233.10 -p 6379 -h 指定IP地址 -p 指定端口 -a 密码(没有密码可以不加) redis-cli 命令行工具 redis-server star stop restart 控制redis redis-benchmark 检测redis在本机的运行效率 redis-check-aof 修复aof持久化的文件 redis-check-rdb 修复rdb持久化的文件
redis-benchmark -h192.168.233.10-p6379-c100 -n 100000 向redis的主机模拟发送100个并发连接,同时发送十万个请求测试
redis-benchmark-h192.168.233.10-p6379 -9-d 100 模拟存储一百个数据包的性能测试
redis数据库常用的命令
基础数据类型
string 字符串
list 列表
hash 散列,键值对集合
set 集合,不重复的无序集合
zet 集合,有序集合
set 创建数据
get 键值对名称 获取数据
exists 键值对名称 存在返回1 不存在返回0
type 键值对名 查看类型
del 键值对名 删除 返回1成功
rename 旧名 新名 该键值对名
config set requirepass 123456 #设置密码 auth 123456
string类型是redis的基础类型 最大能够存储512B的数据,
数字 图片 等等都是默认string类型
append #对值进行追加和创造 192.168.65.11:6379> incr mykey #自增 (integer) 21 192.168.65.11:6379> decr mykey #自减 (integer) 20 incrby mykey 10 #指定增加 (integer) 30 192.168.65.11:6379> decrby mykey 10 #指定减少 (integer) 20 move 键值对名 1 #转移库 select 0 #切换库 192.168.65.11:6379> setex mykey 15 hello #15秒之后就消失 OK 192.168.65.11:6379> ttl mykey (integer) 7 192.168.65.11:6379> ttl mykey (integer) -2
一次创建多个键值对
192.168.65.11:6379> mset test1 1 test2 2 test3 3 OK 192.168.65.11:6379> KEYS * 1) "test1" 2) "test3" 3) "test2"
一次查看多个键值对
192.168.65.11:6379> mget test1 test2 test3 1) "1" 2) "2" 3) "3"
list 列表
创建列表
192.168.65.11:6379> LPUSH mykey a b c d (integer) 4 192.168.65.11:6379> LRANGE mykey 0 -1 1) "d" 2) "c" 3) "b" 4) "a" 192.168.65.11:6379> LRANGE mykey 0 2 1) "d" 2) "c" 3) "b" #0是起始位,2是索引位 192.168.65.11:6379> LRANGE mykey 2 -1 1) "b" 2) "a" #-1 表示最后一位
插入数据
192.168.65.11:6379> LPUSHx mykey e (integer) 5 192.168.65.11:6379> LRANGE mykey 0 -1 1) "e" 2) "d" 3) "c" 4) "b" 5) "a" # 插入时从起始位开始插入
移除数据
192.168.65.11:6379> LPOP mykey "e"
查看有几个元素
192.168.65.11:6379> llen mykey (integer) 4
删除
192.168.65.11:6379> lrem mykey 2 a (integer) 1 192.168.65.11:6379> lrem mykey 1 c (integer) 1
删除指定位置的值
192.168.65.11:6379> LPUSH mykey a b c d e f (integer) 6 192.168.65.11:6379> lindex mykey 4 "b"
添加值
在指定位置后添加
192.168.65.11:6379> linsert mykey after e 8 (integer) 7 192.168.65.11:6379> LRANGE mykey 0 -1 1) "f" 2) "e" 3) "8" 4) "d" 5) "c" 6) "b" 7) "a"
192.168.65.11:6379> linsert mykey after e 8 (integer) 7 192.168.65.11:6379> LRANGE mykey 0 -1 1) "f" 2) "e" 3) "8" 4) "d" 5) "c" 6) "b" 7) "a"
从左往右删
192.168.65.11:6379> rpop mykey1 "d" 192.168.65.11:6379> lrange mykey1 0 -1 1) "a" 2) "b" 3) "c"
hash类型
散列 用来存储对象,对象的类别和ID构成一个键名
192.168.65.11:6379> hset mykey id1 1 id2 2 id3 3 (integer) 3 192.168.65.11:6379> hlen mykey (integer) 3 192.168.65.11:6379> hget mykey id1 "1"
192.168.65.11:6379> hgetall mykey 1) "id1" 2) "1" 3) "id2" 4) "2" 5) "id3" 6) "3"
添加
192.168.65.11:6379> hsetnx mykey id4 1 (integer) 1 192.168.65.11:6379> hgetall mykey 1) "id1" 2) "1" 3) "id2" 4) "2" 5) "id3" 6) "3" 7) "id4" 8) "1"
set集合 无序集合
元素类型只能是string,在无序集合当中元素具有唯一性,不允许重复。
应用场景,set的数据来追踪唯一的数据。
192.168.65.11:6379> sadd test a b c d (integer) 4 192.168.65.11:6379> smembers test 1) "c" 2) "d" 3) "b" 4) "a"
插入时有相同数据就不重复插入
192.168.65.11:6379> sadd test a e f (integer) 2 192.168.65.11:6379> smembers test 1) "b" 2) "a" 3) "c" 4) "d" 5) "f" 6) "e"
获取所有值和随机获取
192.168.65.11:6379> scard test (integer) 6 192.168.65.11:6379> srandmember test "e" 192.168.65.11:6379> srandmember test "a"
随机删和指定删
192.168.65.11:6379> spop test "a" 192.168.65.11:6379> spop test "f" 192.168.65.11:6379> srem test c (integer) 1 192.168.65.11:6379> smembers test 1) "d" 2) "b" 3) "e"
从一个集合移到另一个集合
192.168.65.11:6379> smove test test2 a #值不能重复
有序集合 sorted set (zset)
元素类型都是string 元素唯一,不能重复
每个元素都会关联doublel类型的分数score(表示权重),通过权重的大小进行排序,权重大小可以相同
192.168.65.11:6379> zadd test1 1 "one" (integer) 1 192.168.65.11:6379> zadd test1 2 "two" 3 "three" (integer) 2 192.168.65.11:6379> ZRANGE test1 0 -1 withscores 1) "one" 2) "1" #权重 3) "two" 4) "2" 5) "three" 6) "3" 192.168.65.11:6379> ZRANGE test1 0 -1 1) "one" 2) "two" 3) "three"
权重可以相同
192.168.65.11:6379> ZRANGE test1 0 -1 withscores 1) "one" 2) "1" 3) "four" 4) "2" 5) "two" 6) "2" 7) "three" 8) "3"
获取权重范围
192.168.65.11:6379> zrangebyscore test1 2 5 1) "four" 2) "two" 3) "three"
五种数据类型
string 基本类型
list 列表
hash 散列 一个hash可以存储多个对象和对象值,对象名不可重复
set 无序集合,没有重复,没有权重
zset 有集合,没有重复,可以按照权重排序 string