Redis 学习
一、redis简介
1.什么是redis
非关系型数据,存储方式是 key:value 形式
2.redis作用
1.会话保持(键过期)
2.缓存(memcache、mongodb)
3.消息队列(kafka、zero-mq)
3.为什么用redis
1.redis功能全面
2.企业使用率高
4.redis优点
1.高速读写
redis所有数据都是存储在内存中的,使用C语言,使用的是单线程架构
2.数据类型丰富
3.简单稳定
4.支持客户端语言很多
java,python,php,C语言,nodejs
5.支持持久化
可以将数据定期写入磁盘
6.有很多内存分配和回收策略
7.支持事务,锁
8.消息队列
9.支持高可用
主从
哨兵模式
5.redis帮助
官方网站:https://redis.io/
下载网站:http://download.redis.io/releases/
帮助网站:http://redisdoc.com/
6.缓存服务对比
Memcached:
1)优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash多核结构、多线程读写性能高。
2)缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复杂度高
Redis:
1)优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高
2)缺点:多线程读写较Memcached慢
Tair:
1)优点:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、支持分布式分片集群、支撑了几乎所有淘宝业务的缓存。
2)缺点:单机情况下,读写性能较其他两种产品较慢
1.Memcached:多核的缓存服务,更加适合于多用户并发访问次数(访问次数较少的应用场景)。
2.Redis:单核缓存服务,在单节点情况下,更加适合少量用户,多次访问的应用场景。
redis一般在企业中,是单机多实例架构
二、redis使用场景
1.缓存
放在mysql前面
2.会话保持
session,超时断开
折扣券到期 1 0
3.排行榜
4.计数器
帖子浏览次数
点赞点踩
5.社交软件-集合
共同好友,共同爱好
6.消息队列
配合ELK实现日志收集
三、redis部署
1.下载安装包
[root@db01 ~]
2.安装依赖
[root@db01 ~]
3.解压包
[root@db01 ~]
[root@db01 ~]
[root@db01 ~]
4.安装
[root@db01 ~]
[root@db01 redis]
5.启动redis
[root@db01 redis]
6.连接redis
[root@db01 redis]
[root@db01 redis]
export PATH=/usr/local/redis/src:$PATH
[root@db01 redis]
7.关闭redis
[root@db01 redis]
[root@db01 redis]
127.0.0.1:6379> shutdown
13282:M 09 May 10:38:54.893
13282:M 09 May 10:38:54.893 * Saving the final RDB snapshot before exiting.
13282:M 09 May 10:38:54.895 * DB saved on disk
13282:M 09 May 10:38:54.895
not connected> quit
四、redis配置文件
[root@db01 ~]
-rw-rw-r-- 1 root root 46695 May 9 10:41 /usr/local/redis/redis.conf
1.创建存放配置文件的目录
[root@db01 ~]
2.编写配置文件
[root@db01 ~]
daemonize yes
bind 172.16.1.51 127.0.0.1
port 6379
pidfile /server/redis/6379/redis.pid
loglevel notice
logfile /server/redis/6379/redis.log
protected-mode no
3.指定配置文件启动redis
[root@db01 ~]
五、redis操作
1.基本操作
1.连接redis
[root@db01 ~]
2.查看所有的key
127.0.0.1:6379> keys *
127.0.0.1:6379> DBSIZE
3.添加一条数据
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> DBSIZE
(integer) 1
127.0.0.1:6379> KEYS *
1) "k1"
4.查看数据
127.0.0.1:6379> get k1
"v1"
5.删除数据
127.0.0.1:6379> del k1
(integer) 1
127.0.0.1:6379> KEYS *
(empty list or set)
6.修改数据
127.0.0.1:6379> set k1 v111111
OK
127.0.0.1:6379> get k1
"v111111"
127.0.0.1:6379> set k1 v2222222
OK
127.0.0.1:6379> get k1
"v2222222"
7.追加数据
127.0.0.1:6379> APPEND k1 3333
(integer) 12
127.0.0.1:6379> get k1
"v22222223333"
2.密码的操作
1.配置文件配置密码
[root@db01 ~]
requirepass 123
2.连接方式(连接会暴露密码在命令行)
[root@db01 ~]
3.不输入密码操作
[root@db01 ~]
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH 123
OK
127.0.0.1:6379> keys *
(empty list or set)
4.redis里获取密码
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "123"
5.redis里设置密码
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "123"
127.0.0.1:6379> CONFIG SET requirepass 234
OK
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "234"
3.通用操作
1.判断key是否存在
127.0.0.1:6379> EXISTS k1
(integer) 1
127.0.0.1:6379> EXISTS k2
(integer) 0
2.修改key的名字
127.0.0.1:6379> RENAME k1 k1000
OK
3.查看key的类型
127.0.0.1:6379> TYPE k1000
string
4.设置生存时间
127.0.0.1:6379> set session baidu
OK
127.0.0.1:6379> EXPIRE session 100
(integer) 1
127.0.0.1:6379> PEXPIRE session 100000
(integer) 1
127.0.0.1:6379> TTL session
(integer) 95
5.取消生存时间
127.0.0.1:6379> PERSIST session
(integer) 1
127.0.0.1:6379> TTL session
(integer) -1
127.0.0.1:6379> keys *
1) "session"
2) "k1000"