Redis快速入门
Redis介绍
Redis是一个键值数据库,内存数据库,属于AP模型(CAP理论模型)
有四种模式可以部署
- 单机模式
- 主从模式
- 哨兵模式
- 集群模式
Redis内部使用自己设计的一种文本协议进行客户端与服务端之间的通信-RESP(基于TCP协议实现,采用请求/响应模型)
在集群模式下,Redis会对存储数据进行切片(利用哈希槽进行分片,Redis cluster划分了16384个槽,一个槽对应一个节点,存数据时会先算哈希值,具体来说就是在存取key时,Redis会使用CRC16算法得出一个结果,再对16384取余计算出槽位置)
Redis的优势
- 基于内存
- 单线程模型
- 多路复用IO模型,就是多个线程的IO注册到同一个管道上,这个管道会统一和内核进行交互,当管道中的某一个请求需要的数据准备好之后,进程就把对应的数据拷贝到用户空间中。(分为三种:select、poll、epoll)
- 高效的数据结构(基本数据结构和高级数据结构)
- 字符串 String
- 列表 List
- 集合 Set
- 有序集合 Zset
- 哈希 Hash
- 流 Stream
- 位图 Bitmap
- Geospatial
- HyperLogLog
- 多线程的引入(Redis6.0),只是接收网络通信使用了多线程,数据的读写操作还是使用的单线程
Redis安装(Ubuntu)
更新apt
1 | sudo apt update |
安装Redis
1 | sudo apt install redis-server |
查看Redis版本
1 | redis-cli --version |
查看运行状态
1 | systemctl status redis |
配置远程连接
1 | sudo nano /etc/redis/redis.conf |
ps:需要注意的是,Redis属于键值对数据库,然后键类型是支持所有二进制序列,但是一般都是使用字符串,空字符串也是一个有效的key值,值的类型就是五种基本数据类型加上高级数据类型
命令行操作
Redis默认为16个库
切换库
1 | select db |
删除库所有数据
1 | flushdb |
查看所有key
1 | keys * |
返回存在的key的数量
1 | exists key [key...] |
Redis可以给key设置过期时间expire &ttl
1 | expire key 30 |
返回key存储的value数据类型
1 | type key |
删除key
1 | del key |
字符串 String
1 | # 设置 |
哈希 Hash,这里可以这么理解,就相当于创建一个哈希表,键key相当于表的名字,field和value表示哈希表的槽位和数据值
1 | # 新建 |
列表 List
1 | # 添加 lpush 和rpush |
集合Set
1 | # 添加 sadd |
有序集合 Zset
1 | # 添加zadd |
Java操作Redis
工具:IDEA
安装依赖,使用jedis操作
1 | <dependency> |
初始化对象
1 |
|
然后就可以使用jedis对Redis进行操作了
字符串String
1 |
|
列表List
1 |
|
集合Set
1 |
|
有序集合Zset
1 |
|
哈希Hash
1 |
|
完整的代码
1 | package com.sakura.test; |