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 ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz

2.安装依赖

[root@db01 ~]# yum install -y gcc gcc-c++

3.解压包

[root@db01 ~]# tar xf redis-3.2.12.tar.gz
#移动目录
[root@db01 ~]# mv redis-3.2.12 /usr/local/
#做软连接
[root@db01 ~]# ln -s /usr/local/redis-3.2.12 /usr/local/redis

4.安装

#进入目录
[root@db01 ~]# cd /usr/local/redis
#安装
[root@db01 redis]# make

5.启动redis

[root@db01 redis]# ./src/redis-server &

6.连接redis

[root@db01 redis]# ./src/redis-cli

#配置环境变量
[root@db01 redis]# vim /etc/profile.d/redis.sh
export PATH=/usr/local/redis/src:$PATH
[root@db01 redis]# source /etc/profile

7.关闭redis

[root@db01 redis]# redis-cli shutdown

[root@db01 redis]# redis-cli 
127.0.0.1:6379> shutdown
13282:M 09 May 10:38:54.893 # User requested shutdown...
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 # Redis is now ready to exit, bye bye...
not connected> quit

四、redis配置文件

#默认的配置文件
[root@db01 ~]# ll /usr/local/redis/redis.conf 
-rw-rw-r-- 1 root root 46695 May  9 10:41 /usr/local/redis/redis.conf

#一般都是自己手动写配置文件
1.创建存放配置文件的目录
[root@db01 ~]# mkdir /server/redis/6379 -p

2.编写配置文件
[root@db01 ~]# vim /server/redis/6379/redis.conf

daemonize yes                
#启动守护进程,指定配置文件启动直接后台启动
bind 172.16.1.51 127.0.0.1        
#绑定的主机地址
port 6379                    
#指定端口
pidfile /server/redis/6379/redis.pid    
#指定pid文件路径
loglevel notice                        
#指定日志级别
logfile /server/redis/6379/redis.log    
#指定日志文件路径
protected-mode no                    
#关闭安全模式

3.指定配置文件启动redis
[root@db01 ~]# redis-server /server/redis/6379/redis.conf

五、redis操作

1.基本操作

1.连接redis
    [root@db01 ~]# redis-cli
2.查看所有的key
    127.0.0.1:6379> keys *
    #执行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 ~]# vim /server/redis/6379/redis.conf
    requirepass 123

2.连接方式(连接会暴露密码在命令行)
    [root@db01 ~]# redis-cli -a 123

3.不输入密码操作
    [root@db01 ~]# redis-cli
    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"
Copyright © 高程程 all right reserved,powered by Gitbook修订于: 2021-05-18 21:15:03

results matching ""

    No results matching ""