redis 缓存中间件 缓存数据库
nginx web服务
php 转发动态请求
tomcat web页面,也可以转发动态请求。
springboot 自带tomcat。
redis也是一个数据库,不单单是一个缓存工具。
redis 非关系型数据库 nosql not only sql 不仅仅是sql
键值对形式
key value
test1=test2
数据的类型不是定义好的类型
redis简介:
redis 远程字典服务器
键值对
开源的,C语言写的nosql数据库
redis基于内存运行,所有的数据不是保存在硬盘,而是内存
持久化-------定期或者认为的把数据保存到硬盘。
redis的优点:
1.极高的读写速度,读速度可以达到110000次/s写入速度81000/s
2.支持丰富的数据类型,键值对可以定义多种数据类型 string 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持久化的文件
redia-check-rbd 修复rbd持久化的文件
redis-benchmark -h 192.168.233.10 -p 6379 -c 100 -n 100000
向redis的主机模拟发送100个并发连接,同时发送10万个请求。
redis-benchmark -h 192.168.233.10 -p 6379 -q -d 100
模拟存储100个数据包的性能测试
redis数据库常用的命令
基础数据类型
string 字符串
list 列表
hash 散列,键值对集合
set 集合,不重复的无序集合
zet 集合,有序集合。
set test1 10 set创建数据 set+键的名称+键值
get test1 get获取数据 get+键的名称
KEYS * 查看所有键的键值对
keys test 查看指定的键值对
exists test1 如何判断键值是否存在 输出值为1则存在,为0则不存在
set test1 xy102 set对原有的键值对进行创建,就是对原有值进行更改
type test1 type +键值对名称 查看键值的类型
del test1 del+键值对名称(删除多个中间用逗号隔开) 删除键值
rename test4 chengqian 修改健的名称为chengqian
如何添加密码
config set requirepass 123456 设置密码
auth 123456
config get requirepass
登录不输入密码可以连接,但是不可以查询
有了密码才能查
redis-cli -h 192.168.233.10 -p 6379 -a 123456
redis-cli -h 192.168.233.10 -p 6379
auth123456
string类型 是redis的基础类型 最大能够存储512MB的数据
数字,图片等等都是默认string类型。
append 追加,如果没有这个键会创建,如果有就会追加
append chengqian shuai
append chengqian zhendema
set mykey 20
incr mykey 让这个值自增1
decr mykey 让这个值自减1
incrby mykey 10 指定加10
decrby mykey 10 指定减10
setex mykey 15 hello 临时存储键值15s,15s后自动删除
ttl mykey 查看生命周期
dbsize 当前表有5个键值对
config get databases 查看有多少个库,一共16个
select * 切换到第*个库
每个库都是独立的,互不影响
move mykey 1 把键值对mykey移动到1库
flushdb 清空当前库。
flushall清空所有的库。
mset test1 1 test2 2 test3 3 一次性创建多个
mget test1 test2 test3 一次性查看多个
list类型 列表
lpush mykey a b c d
lrange mykey 0 -1 打印这个列表中的所有元素
-1是列表当中的最后一个元素
lrange mykey 0 2
lrange mykey 1 2
lrange mykey 0 1
lrange mykey 1 2
lrange mykey 2 3
lpushx mykey e 插入
lrange mykey 0 -1
lpop mykey 移除
llen mykey 查看
lrem myken 2 a 删除两个等于a的值
lrem myken 1 c
del myken #删除这个键
lpush myken a b c d e f
lindex myken 4 从右往左查看第四位数(从0开始)
lset mykey 5 10 替换指定位置的值
lrange myken 0 -1 查看所有键值
linsert mykey before 10 9 在10前面插入9
linsert mykey after e 9 在e后面插入9
lrange myken 0 -1
rpush mykey1 a b c d
lindex mykey 0
lindex myken1 0
rpush mykey1 e
lindex mykey1 3
lindex mykey1 4
lrange mykey1 0 -1
rpop mykey1
hash类型 散列 用来存储对象,对象类别和id构成一个键名。
hash存储的空间很小,占用的内存和持久化后的磁盘空间都很少。
hset myhash id1 1 id2 2 id3 3
hget myhash id
hash是一共键值对,包含多个对象和对象的值
myhash就是一个hash值,一个hash值可以存4294967295个键值对。
hlen myhash 查询myhash中有几个对象
HDEL myhash id 删除id这个对象
hmget myhash id1 id2
hgetall myhash
hkeys myhash
hvalsmyhash
hsetnx myhash id3 3 添加一个对象,前提是这个对象不能存在
set 集合无序集合
元素类型只能是string类型,无序集合当中,元素具有唯一性,不允许重复。
应用场景,用set的数据来追踪唯一性的数据,比方说IP地址或者根据客户的id区分不同的客户购买的同一产品。
sadd myset a b b c
smembers myset
sadd myset a d e
scard myset 获取当前集合中的元素
srandmember myset 从当前集合中随机看一个元素
spop myset 随机删除一个元素
srem myset a 指定删除
把集合1中的数据移到另一个集合中。集合1当中没有这个数据
smove myset myset2 a
有序集合,sorted set zset
元素类型都是string,元素也是唯一的不能重复
每个元素都会关联一个double类型的分数score(表示权重),通过权重的大小进行排序,权重可以相同
zadd myzet 1 "one"
zadd myzet 2 "two" 3 "three"
zrange myzet 0 -1 withscores
zrangebyscore myzet 2 5 2表示最小值5表示最大
获取权重2-5的成员
zrevrabge myzet 1 3