目录
概念
安装redis
redis基本命令
给redis添加密码
基础数据类型
string类型
list列表类型
set创建(一个键对应一个值)
set 创建数据
get 获取数据
keys * 展示所有的键
exists 判断键值是否存在
type 查看数据的类型
del 删除键
rename 修改键的名字
append 追加
strlen 统计值有多少字符
incr 自增一
decr 自减一
指定值增减
setex 设置键的生命周期
ttl 查看剩余生命周期
dbsize 查看共有多少键
config get databases 查看一共有多少库
select 切换库
move 备份
flushdb 清空库
mset 同时创建多个键值
mget 同时查看多个键值
lpush 创建(一个键多个值)
lpush 倒序创建多个值
lrange 展示所有键的值(倒序)
lpop 删除多个值中的一个(从右往左删)
llen 查看键有多少个值
lrem 删除指定的值
lindex 查看指定的值
lset 替换
linsert 指定位置添加值
rpush 创建多个值(正序)
rpop 删除值(从左往右)
hash类型
hset 创建数据
hget 获取数据
hlen 查看有多少个对象
hdel 删除对象
hmget 获取多个对象的值
hgetall 获取所有的值
hkeys 展示对象
hvals 查看对象的值
hsetnx 添加数据
set 无序集合
zese 有序集合
总结
常用中间件
nginx 是web服务的中间件
php是nginx和数据库之间的中间件,用于转发动态请求
tomcat既是web页面的中间件,也可以转发动态请求
redis是数据库的缓存中间件,用来缓存数据库
目前主流用的是springboot,它自带tomcat
概念
redis 也是一个数据库,不单单是一个缓存工具。
它是非关系型数据库(nosql)。特点是键值对形式。数据的类型不是定义好的类型。
redis叫远程字典服务器,是开源的。redis基于内存运行,所有的数据不是保存在硬盘,而是内存。它具有持久化,定期或者人为的把数据保存到硬盘。
redis的优点
1.极高的读写速度,读速度可以达到11万次/s,写速度可以达到8.1万次/s
2.支持丰富的数据类型,键值对可以定义多种数据类型(string list hash set)
3.支持数据持久化,能把内存当中数据保存到磁盘
4.原子性,redis所有操作都是原子性
5.支持主从模式和高可用模式(哨兵模式),以及集群
redis基于内存运行的数据库,缓存是最常用应用的场景。其他场景:排行榜、计数器、存储关系、实时分析记录、日志系统都用redis。
redis的数据流向
缓存的概念
缓存是一种用于存储临时数据副本的技术,目的就是提高访问速度和性能
缓存通常位于数据的访问路径上,数据的必经之路。可以在不直接访问原始数据的情况下,可以直接获取数据。
缓存的应用场景
web缓存、数据库缓存、对象缓存(大数据应用)
安装redis
1.yum install -y gcc gcc-c++ make
2.tar -xf redis-5.0.7.tar.gz
3.cd redis-5.0.7/
make -j 4
make PREFIX=/usr/local/redis install
4.cd utils/
./install_server.sh
一路回车到path [ ] 在这里输入 /usr/local/redis/bin/redis-server 然后在回车
5.ln -s /usr/local/redis/bin/* /usr/local/bin/
netstat -antp | grep 6379 查看端口是否启动
6.vim /etc/redis/6379.conf
70行添加本机ip
7. /etc/init.d/redis_6379 restart 重启redis
8.redis-cli -h 192.168.233.10 -p 6379 进入redis
redis基本命令
/etc/init.d/redis_6379 restart 重启redis
tail -f /var/log/redis_6379.log 查看redis日志
redis-cli -h 192.168.233.10 -p 6379 进入redis
-h 指定ip地址
-p 指定端口
-a 密码(没有密码可以不加)
redis-cli 命令行工具
redis-server start/stop/restart 控制redis
redis-benckmark 检测redis在本机的运行效率
redis-check-aof 修复aof持久化的文件
redis-check-rdb 修复rdb持久化的文件
redis-benchmark -h 192.168.233.10 -p 6379 -c 100 -n 100000
向redis的主机模拟发送100个并发链接,同时发送十万个请求测试
redis-benchmark -h 192.168.233.10 -p 6379 -q -d 100
模拟存储100个数据和性能测试
给redis添加密码
config set requirepass 123456
基础数据类型
string 字符串
list 列表
hash 散列,键值对集合
set 集合,不重复的无序集合
zset 集合,有序集合
string类型
是redis的基础类型,最大能够存储512MB 的数据
数字和图片等等都是默认string类型
list列表类型
set创建(一个键对应一个值)
set 创建数据
set test 10
test是键,10是值
如果已有值,再创建会修改这个值的数据
get 获取数据
get test
keys * 展示所有的键
keys test 展示指定的键
exists 判断键值是否存在
exists test
返回值是1,表示存在
返回值是0,表示不存在
type 查看数据的类型
type test
del 删除键
del test
rename 修改键的名字
rename test txt
append 追加
strlen 统计值有多少字符
strlen test
incr 自增一
incr test
decr 自减一
decr mykey
指定值增减
incrby mykey 10 指定增加10
decrby mykey 10 指定减少10
setex 设置键的生命周期
setex mykey 15 hello
ttl 查看剩余生命周期
ttl mykey
dbsize 查看共有多少键
config get databases 查看一共有多少库
默认就是16个库
select 切换库
select 0切换到第一个库
每个库都是独立的,互不影响
move 备份
move mykey 1 把mykey键复制并迁移到库1
flushdb 清空库
flushdb 清空当前库
flushall 清空所有库
mset 同时创建多个键值
mset test1 1 test2 2
mget 同时查看多个键值
mget test1 test2 test3
lpush 创建(一个键多个值)
lpush 倒序创建多个值
lpush mykey a b c d
lpushx mykey e 添加一个值e
lpush和set的区别:
set创建的键是一个键对应一个值
lpush创建的键可以对应多个值
lrange 展示所有键的值(倒序)
lrange mykey 0 -1
lpop 删除多个值中的一个(从右往左删)
lpop mykey
llen 查看键有多少个值
llen mykey
lrem 删除指定的值
lrem mykey 2 a 删除两个等于a的值
lrem mykey 1 c 删除应该等于c的值
lindex 查看指定的值
lindex mykey 5
lset 替换
lset mykey 5 10 把第五个值替换成10
linsert 指定位置添加值
linsert mykey before 10 9 在10的值前面添加9
linsert mykey after 10 8 在10的值后面添加8
rpush 创建多个值(正序)
rpush mykey a b c d
rpop 删除值(从左往右)
rpop mykey
hash类型
散列,用来存储对象,对象类别和ID构成键名。hash存储的空间很小,占用的内存和持久化后的磁盘空间都很少。
hset 创建数据
hset myhash id 1
hset myhash id1 1 id2 2 id3 3
hget 获取数据
hget myhash id
hash是一个键值对,包含多个对象和对象的值
myhash就是一个hash值,一个hash值可以存42亿个键值对
hlen 查看有多少个对象
hlen myhash
hdel 删除对象
hdel myhash id
hdel myhash id1 id2 id3
hmget 获取多个对象的值
hmget myhash id1 id2
hgetall 获取所有的值
hgetall myhash
hkeys 展示对象
hkeys myhash
hvals 查看对象的值
hvals myhash
hsetnx 添加数据
hsetnx myhash id2 2
set 无序集合
无序集合,元素类型只能是string,无序集合当中元素具有唯一性,不允许重复
应用场景,set的数据来追踪唯一性的数据,比方说ip地址或者根据客户的id区分不同客户购买的同一产品
sadd myset a b c 添加数据
smembers myset 查看数据
scard myset 查看有多少个值
srandmember myset 随机展示一个值
spop myset 随机删除一个值
srem myset a 移除a
smove myset myset2 a 把myset中的数据a迁移到myset2中
zese 有序集合
元素类型都是string 元素唯一,不能重复
每个元素都会关联一个doublel类型的分数score(表示权重),通过权重的大小进行排序,权重可以相同
zdd myzet 1 "one" 添加数据 (值哪呢过重复,1 这个顺序不能重复)
zrange myzet 0 -1 withscores 展示有序数据
zrangebyscore myzet 2 5 查看权重≤2 ≤score ≤5 的值
zrevrange myzet 1 3