Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
文章目录
一、安装和配置
1、安装
下载地址:http://redis.cn/download.html
安装的时候只需注意下面:
其他只需下一步即可。
2、配置
- 绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip
bind 127.0.0.1
- 端⼝,默认为6379
port 6379
- 是否以守护进程运⾏
如果以守护进程运⾏,则不会在命令⾏阻塞,类似于服务。如果以⾮守护进程运⾏,则当前终端被阻塞。设置为yes表示守护进程,设置为no表示⾮守护进程。推荐设置为yes,但是在window中没用,后面我们接收如何安装redis后台服务。
daemonize yes
- 数据⽂件
dbfilename dump.rdb
- 数据⽂件存储路径
dir ./
- ⽇志⽂件
logfile “./redis-server.log”
- 数据库,默认有16个
database 16
- 主从复制,类似于双机备份,在从里配置,主服务器中不配置。
slaveof 主服务器ip 主服务器port
二、数据库操作
1、redis服务端与客户端命令
1.1 redis服务端命令
- 安装后台服务
redis-server --service-install 配置文件名 --service-name 服务名 --loglevel verbose
- 卸载服务
redis-server --service-uninstall --service-name 服务名
- 启动服务
redis-server --service-start --server-name 服务名
// 未配置后台服务使用下面命令启动服务
// redis-server 配置文件名
redis-server redis.windows.conf
- 停止服务
redis-server --service-stop --server-name 服务名
- 重启服务
redis-server --service-restart --server-name 服务名
1.2 客户端命令
//redis-cli -p 端口号 -h ip地址
redis-cli -h 127.0.0.1 -p 6379 //若是没有指定ip和port 默认为127.0.0.1回环地址,6379端口
2、string
- 设置值
set key value EX seconds //seconds 为过期时间,没有设置将永久保存
setex key seconds value //seconds 为过期时间,
mset key1 value1 [key2 value2 ...] //设置多个键值对
append key value1 // 向键为key的value 后面追加value1
- 获取值
get key
mset key1 [key2 ...] //获取多个值
3、hash
hash 存储的格式就像我们的对象一样,一个对象中有多个属性
- 设置值
hset key field value // 设置单个值
hmset key field1 value1 field2 value2 ... // 设置多个值
- 获取值
hget key
hmget key1 [key2 ...] //获取多个值
hkeys key 获取指定键所有的属性
4、键命令
flushall //刷新数据库
keys 正则 //查找键 参数支持正则
exists key //判断键是否存在 存在返回1 不存在返回0
type key //查看键值得类型
del key,key //删除键及对应得值
expire key seconds //设置过期得时间
ttl key //查看有效时间
5、list
lpush key value1 value2 //从a1的左侧插入
rpush key value1 value3 //从key的右侧插入
lrange key start stop //查询值,可以 负索引
linsert key before或after //现有元素 新元素 在指定元素的前或后插?新元素
lset key 索引位置 值 //修改索引位置的值
lrem key count value //删除指定元素 count>0 从头往尾移除 count <0从尾往头移除 count=0 全部删除
5、set 和 zset
// set 无序集合
sadd key member1 member2.. //添加数据
smembers key //获取数据
srem key members //删除集合
// zset 有序集合
zadd key score1 member1.... //添加 score 为权重
zrange key start stop //获取
zscore key member //返回成员member的score值
zrem key member1 member2 ... //删除指定元素
zremrangebyscore key min max //删除权重在指定范围的元素
三、搭建主从
将redis.widows.conf 复制两份,一份命名为master.conf ,一份命名为slave.conf。修改修改两个配置文件的配置
master.conf 只需修改port 就可以了。其实大多的是不需要这个文件,只需将redis.windows.conf 作为主服务器配置就可以了,我这里只是不想动我的redis.windows.conf 而已。
slave.conf 需要修改端口号,而且还要指定主服务器是哪一个
修改端口
指定主服务器
之后启动主从服务器,客户端连接测试即可。
四、搭建集群
-
新建文件夹clu
-
进入clu 新建 6 个 Redis 的文件夹和相应的配置文件(以端口命名文件夹)。每个文件夹中新建文件redis.conf
# 修改端口号,和文件夹的名字相同
9000/redis.conf
port 9000
bind 127.0.0.1
pidfile 9000.pid
cluster-enabled yes
cluster-config-file 9000_node.conf
cluster-node-timeout 15000
appendonly yes
9001/redis.conf
port 9001
bind 127.0.0.1
pidfile 9001.pid
cluster-enabled yes
cluster-config-file 9001_node.conf
cluster-node-timeout 15000
appendonly yes
.
.
.
用 Redis 命令(redis-server)安装 6 个 Redis 服务,并启动
redis-server --service-install redis.conf --service-name redis9000 --loglevel verbose
redis-server --service-start --service-name redis9000
redis-server --service-install redis.conf --service-name redis9001 --loglevel verbose
redis-server --service-start --service-name redis9001
redis-server --service-install redis.conf --service-name redis9002 --loglevel verbose
redis-server --service-start --service-name redis9002
redis-server --service-install redis.conf --service-name redis9002 --loglevel verbose
redis-server --service-start --service-name redis9002
redis-server --service-install redis.conf --service-name redis9003 --loglevel verbose
redis-server --service-start --service-name redis9003
redis-server --service-install redis.conf --service-name redis9004 --loglevel verbose
redis-server --service-start --service-name redis9004
redis-server --service-install redis.conf --service-name redis9005 --loglevel verbose
redis-server --service-start --service-name redis9005
如果上面你的安装服务无法启动你只好进入每个文件夹中启动redis服务了
redis-server redis.conf
- 安装 ruby 并且 用 Ruby 命令(gem)安装 Redis 的相关组件。
请尽可能用比较新的 RubyGems 版本,建议 2.6.x 以上。ruby 百度网盘下载路径:https://pan.baidu.com/s/1EvoOdCcSHIGCLQqHgdX7LQ 提取密码:lyea
// 查看gem 版本
gem -v
//查看镜像源:
gem sources -l
更新镜像源:
// 更新gem 的镜像源
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
// 安装redis相关文件
gem install redis
- 用 redis-trib.rb 创建集群。
redis-trib.rb create --replicas 1 127.0.0.1:9000 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005
// 查看集群内所有的节点以及其关系
redis-cli -c -h 127.0.0.1 -p 9000 cluster nodes
//客户端登录集群:
redis-cli -c -p 9003 -h 127.0.0.1
- 集群特有的命令有(如果没有登录,那么,每次执行集群的命令时候,都要输入前面的登录指令):
cluster info // 集群总揽
cluster nodes // 列出集群当前已知的所有节点(node),以及这些节点的相关信息
cluster meet <ip> <port> // 将指定的节点(ip:port)添加到集群中,让它成为集群的一员
cluster forget <node_id> // 从集群中移除 node_id 节点
cluster replicate <node_id> // 将当前节点设置为 node_id 节点的从节点
cluster saveconfig // 将节点的配置文件保存到硬盘里面
cluster addslots <slot> [slot ...] // 将一个或多个槽(slot)指派(assign)给当前节点
cluster delslots <slot> [slot ...] // 移除当前节点的一个或多个槽
cluster flushslots // 移除当前节点的所有槽(删除集群内的最后一个主节点时,可用到)
cluster setslot <slot> node <node_id> // 将槽 slot 指派给 node_id 节点。如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,再进行指派
cluster setslot <slot> migrating <node_id> // 将本节点的槽 slot 迁移到 node_id 节点中去
cluster setslot <slot> importing <node_id> // 从 node_id 节点中导入槽 slot 到本节点来
cluster setslot <slot> stable // 取消对槽 slot 的导入(import)或者迁移(migrate)
cluster keyslot <key> 计算键 key 应该被放置在哪个槽上
cluster countkeysinslot <slot> 返回槽 slot 目前包含的键值对数量
cluster getkeysinslot <slot> <count> 返回 count 个 slot 槽中的键