目录
0. 前言
本文章只是简单的快速入门, 简单的命令使用, 详细的命令请查阅官网学习.
1. 简介
1.1 数据类型
String: 字符串
Hash: 散列
List: 列表
Set: 集合
Sorted Set: 有序集合
1.2 特点
(1) 数据的持久化, 存储再磁盘上, 重启后可加载使用
(2) 支持数据结构的存储, set, hash等
(3) 只是master-slave数据备份
(4) key-value格式存储
1.3 优势
(1) 性能极高
(2) 丰富的数据类型
(3) 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。
(4) 丰富的特性, 通知,key过期等
1.4 与其他key-value不同
(1) 有着复杂的数据结构并且支持原子性操作
(2) 运行在内存中速度快,并且支持持久化在磁盘中.
2.安装(Linux)
安装redis命令
sudo pacman -S redis //arch linux
sudo apt-get install redis-server //ubuntu linux
验证是否安装并启动redis
redis-cli
登录成功将会打开以下终端:
redis 127.0.0.1:6379>
ping命令
redis 127.0.0.1:6379> ping
PONG
3. 配置(两种形式)
(1). 在redis安装目录下redis.conf文件用来配置redis配置项
(2). 使用命令配置
获取配置项
CONFIG GET loglevel //获取日志级别
CONFIG GET *
设置配置项
CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
CONFIG SET loglevel "notice" //设置日志级别
4. string
4.1 简介
(1). string 是 redis 最基本的类型. key-value形式.
(2). string 类型是二进制安全的. 可以存储二进制文件.
(3). string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB.
4.2 命令
set key value
get key
example:
5. hash
5.1 简介
(1). key-value的集合
(2). 适合存储对象
5.2 命令
keys * //查看当前所有key
hset key field value // 设置key的属性名与属性值
hget key filed //得到key的属性名对应的值
example:
6. list
6.1 简介
string类型的集合, 按照插入顺序排列, 可以从头或尾部插入
6.2 命令
lpush key value //从左插入列表
rpush key value //从右插入列表
lrange key 0 10 // 从左查看第1到10条
example:
7. set
7.1 简介
(1). 无序的string类型的集合.
(2). 集合中成员的都是唯一的, 不能出现重复的数据, 通过哈希表实现的
7.2 命令
sadd key value
smembers key //查看该key的所有value
example:
8. zset
8.1 简介
有序集合
8.2 命令
zadd key score value //score是分数,分数小, 排列在前面
zrange key 0 10 WITHSCORES //查看第1到第10条记录 value的下面显示分数
examle:
9. HyperLogLog
9.1 简介
(1). 用来作基数(不重复)统计的算法.
(2). 适合当元素数量非常大的时候使用, 占用内存小, 但是有2%误差.
9.2 命令
pfadd key value
pfcount key //计算value的数量
example:
10. 发布与订阅
10.1 简介
发送者发布消息, 订阅者收到消息.
10.2 命令
subscribe <channel> //订阅频道
publish <channel> <message> //发布消息
example:
(1). 订阅频道
(2). 发布消息
(3). 订阅了该频道的将收到消息
11. 事务
11.1 简介
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:
1. 批量操作在发送 EXEC 命令前被放入队列缓存。
2. 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
3. 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
1. 单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
2. 事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
11.2 命令
multi
.... //命令exec //执行以上命令
12. 备份与恢复
(1). 备份
save //在redis安装目录下创建dump.rdb备份文件
BGSAVE //该命令在后台执行
(2). 恢复
将dump.rdb移动到redis安装目录下, 然后开启服务即可恢复数据
config get dir //查看redis目录
13. redis安全
通过配置文件设置密码, 使得redis更安全
CONFIG get requirepass //查看是否需要密码登录
CONFIG set requirepass "password" //设置密码
AUTH password //使用密码登录
14. redis性能测试
Redis 性能测试是通过同时执行多个命令实现的。
//测试10000次set和lpush, 得到次数/每秒
redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q
15. 管道技术
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:
1. 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
2. 服务端处理命令,并将结果返回给客户端。
一般请求步骤:
客户端cmd1 -> 客户端等待 -> 服务器ack1
客户端cmd2 ->客户端等待 -> 服务器ack2
客户端cmd3 -> 客户端等待 -> 服务器ack3
使用管道的步骤
客户端cmd1,cmd2,cmd3 -> 客户端等待 -> 服务器ack1,ack2, ack3
节省了中间多次传输的时间, 提升了效率
16. 客户端与服务器
info //查看redis服务器信息
config get maxclients //获取客户端最大连接数
17. redis脚本
Redis 脚本使用 Lua 解释器来执行脚本。
eval
18. redis分区
无..