第1章 关系型与非关系型
关系型: mysql oracle
非关系型:redis mongo ES
第2章 Redis重要特性 AK47
1.速度快
c语言写的
代码优雅
单线程架构
2.支持多种数据结构
字符串,哈希,列表,集合,有序集合,地理位置
3.丰富的功能
天然计数器
健过期功能
消息队列
4.支持客户端语言多
php,java,python
5.数据持久化
所有的数据都运行在内存中
支持2种格式持久化数据AOF RDB AOF&RDB
6.自带多种高可用架构
主从
哨兵
集群
第3章 redis应用场景
1.缓存-键过期时间
把session会话存在redis,过期删除
缓存用户信息,缓存Mysql部分数据,用户先访问redis,redis没有再访问mysql,然后回写给redis
商城优惠卷过期时间
2.排行榜-列表&有序集合
热度/点击数排行榜
直播间礼物积分排行
3.计数器-天然支持计数器
帖子浏览数
视频播放数
评论数
点赞/踩
4.社交网络-集合
粉丝
共同好友
兴趣爱好
标签
5.消息队列-发布订阅
配合ELK缓存收集来的日志
第4章 Redis安装部署
1.redis官网
https://redis.io/
2.版本选择
2.x very old
3.x redis-cluster
4.x 混合持久化
5.x 新增加了流处理类型 最新稳定版
3.规划目录
/data/soft 下载目录
/opt/redis_6379/{conf,logs,pid} 安装目录,日志目录,pid目录,配置目录
/data/redis_6379/ 数据目录
4.安装命令
mkdir /data/soft -p
cd /data/soft
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar xf redis-5.0.7.tar.gz -C /opt/
ln -s /opt/redis-5.0.7 /opt/redis
cd /opt/redis
make
make install
5.配置文件
mkdir -p /opt/redis_6379/{conf,pid,logs}
mkdir -p /data/redis_6379
cat >/opt/redis_6379/conf/redis_6379.conf<< EOF
daemonize yes
bind 127.0.0.1 10.0.0.51
port 6379
pidfile /opt/redis_6379/pid/redis_6379.pid
logfile /opt/redis_6379/logs/redis_6379.log
EOF
6.启动命令
redis-server /opt/redis_6379/conf/redis_6379.conf
7.检查
ps -ef|grep redis
netstat -lntup|grep 6379
8.连接redis终端
[root@db01 ~]# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
“v1”
127.0.0.1:6379>
9.关闭命令
kill
pkill
redis-cli
SHUTDOWN
- redis-cli shutdown
10.system启动配置
groupadd -g 1000 redis
useradd -u 1000 -g 1000 -M -s /sbin/nologin
chown -R redis:redis /data/redis*
chown -R redis:redis /opt/redis*
cat >/usr/lib/systemd/system/redis.service<<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/redis /opt/redis_6379/conf/redis_6379.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli -h $(ifconfig eth0|awk ‘NR==2{print $2}’) -p 6379 shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start redis
第5章 Redis全局命令
全局命令是指对所有数据类型都通用的命令
0.redis数据格式
key:value
键:值
1.写入测试key
set k1 v1
set k2 v2
set k3 v3
2.查看所有的key
!!!危险命令!!!此操作未满30岁禁止请在家人的看管下执行
keys *
3.查看有多少个key
DBSIZE
4.查看某个Key是否存在
EXISTS k1
状态码:
0 表示这个key不存在
1 表示这个key存在
N 表示存在N个key
5.删除key
DEL k1
DEL k1 k2
状态码:
0 表示这个key不存在
1 表示这个key存在,并且删除成功了
N 表示N个key存在,并且删除成功了N个key
6.键过期
设置过期时间
EXPIRE k1 10
状态码:
0 这个key不存在
1 这个key存在,并且设置过期时间成功
查看keys是否过期
TTL k1
状态码:
-1 这个key存在,并且没有设定存活周期,永不过期
-2 这个key不存在
N 这个key存在,并且在N秒后过期
取消过期时间:
第一种方法:
PERSIST k1
第二种方法:
set k1 v1
结论:
过期后的key会被直接删除
第6章 字符串操作
1.设置一个key
set k1 v1
2.查看一个key
get k1
3.设置多个key
MSET k1 v1 k2 v2 k3 v3 k4 v4
4.查看多个key
MGET k1 k2 k3 k4
5.天然计数器
加1:
SET k1 1
INCR k1
GET k1
加N:
INCRBY k1 100
减1:
INCRBY k1 -1
减N:
INCRBY k1 -100
第7章 列表操作
1.插入列表
LPUSH: 从列表左侧插入数据
RPUSH: 从列表右侧插入数据
2.查看列表长度
LLEN list1
3.查看列表内容
LRANGE list1 0 -1
4.删除列表元素
LPOP: 从列表左边删除一个元素
RPOP: 从列表右边删除一个元素
LPOP list1
RPOP list1
5.删除整个列表
DEL list1
第8章 hash操作
1.mysql数据如何缓存到redis
mysql存储格式:
user
id name job age
1 bobo IT 28
2 json py 25
3 hao bug 26
hash类型存储格式:
key field value field value
user:1 name bobo job IT age 28
user:2 name json job py age 25
user:3 name hao job bug age 26
2.创建一个Hash数据
HMSET user:1 name bobo job IT age 28
HMSET user:2 name json job py age 29
HMSET user:3 name hao job bug age 19
3.查看hash里指定的值
select name from user where id =1 ;
HMGET user:1 name
HMGET user:1 name job age
4.查看Hash里所有的值
select * from user where id =1 ;
HGETALL user:1
第9章 集合操作 set
1.创建集合
SADD set1 1 2 3
SADD set2 1 3 5 7
2.查看集合成员
SMEMBERS set1
SMEMBERS set2
3.查看集合的交集
127.0.0.1:6379> SINTER set1 set2
- “1”
- “3”
4.查看集合的并集
127.0.0.1:6379> SUNION set1 set2
- “1”
- “2”
- “3”
- “5”
- “7”
5.查看集合的差集
127.0.0.1:6379> SDIFF set1 set2
- “2”
127.0.0.1:6379> SDIFF set2 set1
- “5”
- “7”
6.删除一个成员
SREM set1 1
6.注意
集合不允许出现重复的值,自动去重
第10章 有序集合操作
1.添加成员
ZADD SZ3 100 json
ZADD SZ3 90 bobo
ZADD SZ3 99 xiaocancan
ZADD SZ3 98 bughao
2.计算成员个数
ZCARD SZ3
3.计算某个成员分数
ZSCORE SZ3 json
4.按照降序查看成员名次:
ZRANK SZ3 json
ZRANK SZ3 bobo
5.按照升序查看成员名次:
ZREVRANK SZ3 json
ZREVRANK SZ3 bobo
6.删除成员
ZREM SZ3 json
7.增加成员分数
ZINCRBY SZ3 2 xiaocancan
ZSCORE SZ3 xiaocancan
8.返回指定排名范围的成员
ZRANGE SZ3 0 3
ZRANGE SZ3 0 3 WITHSCORES
9.返回指定分数范围的成员
ZRANGEBYSCORE SZ3 95 100
ZRANGEBYSCORE SZ3 95 100 WITHSCORES
10.返回指定分数范围的成员的个数
ZCOUNT SZ3 90 110
第11章 持久化
RDB流程图
AOF流程图