Redis高级实用特性

Redis高级实用特性

Redis 安全
我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。

查看是否设置了密码验证:

127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""

默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。

临时修改密码(redis服务重启后不再生效)

127.0.0.1:6379> CONFIG set requirepass "runoob"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "runoob"

配置文件为Redis添加密码

修改配置文件
sudo vim /etc/redis/redis.conf

设置:requirepass redis的密码

# requirepass foobared

requirepass abc123

重启服务
sudo service redis restart

登录(两种)
1.# ./redis-cli -a  密码 //连接时指定密码来进行授权
2.redis-cli 进入后发现操作不了时
auth 密码
OK
---------------------
windows 下设置密码生效

修改配置文件

启动服务 加载配置文件redis-server redis.conf  \(加载一次即可\)

启动客户端

Redis主从复制

操作步骤:

1.先将linux虚拟机关闭,之后克隆一个。

2.启动两个虚拟机:master(主)和slave(从)

3. 在slave(从)中配置一下ip地址

    \# ifconfig eth0 192.168.128.229

    \# ping 一下看看通不通。

4. 配置从机

    进入:配置文件

    slaveof  192.168.128.228 6379   //配置连接主机的Redis的ip和端口

    masterauth 密码  //配置连接密码



    最后启动slave(从)机的Redis服务。



其他:可以通过info命令中的role属性查看自己角色是master、slave

Redis事务

  >multi   //开启一个事务
    >set age 10 //暂存指令队列
    >set age 20
    >exec    //开始执行(提交事务)
    或>discard //清空指令队列(事务回滚)

Redis乐观锁

Redis Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断
在事务前对被操作的属性做一个:

watch age
multi //开启一个事务(在此期间有其他修改,则此处会失败)
set age 10 //暂存指令队列
set age 20
exec //开始执行(提交事务)
或>discard //清空指令队列(事务回滚)

Redis持久化机制(通过修改配置文件做设置)

1.snapshotting(快照)默认方式
配置    save
save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000
2.Append-only file(aof方式)
配置 appendonly on 改为yes
会在bin目录下产生一个.aof的文件
关于aof的配置
appendonly yes //启用aof 持久化方式

# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化
    appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
# appendfsync no //完全依赖os,性能最好,持久化没保证

Redis发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

Redis 客户端可以订阅任意数量的频道。

我们创建了订阅频道名为 redisChat:
redis 127.0.0.1:6379> SUBSCRIBE redisChat

Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1

现在,我们先重新开启个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。
redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
(integer) 1

redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by runoob.com"
(integer) 1

# 订阅者的客户端会显示如下消息
1) "message"
2) "redisChat"
3) "Redis is a great caching technique"
1) "message"
2) "redisChat"
3) "Learn redis by runoob.com"


----------------------------

序号    命令及描述
1    PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。
2    PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。
3    PUBLISH channel message 将信息发送到指定的频道。
4    PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。
5    SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。
6    UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。

Redis配置虚拟内存

和大多NoSQL数据库一样,Redis同样遵循了Key/Value数据存储模型。在有些情况下,Redis会将Keys/Values保存在内存中以提高数据查询和数据修改的效率,然而这样的做法并非总是很好的选择。鉴于此,我们可以将之进一步优化,即尽量在内存中只保留Keys的数据,这样可以保证数据检索的效率,而Values数据在很少使用的时候则可以被换出到磁盘。

在实际的应用中,大约只有10%的Keys属于相对比较常用的键,这样Redis就可以通过虚存将其余不常用的Keys和Values换出到磁盘上,而一旦这些被换出的Keys或Values需要被读取时,Redis则将其再次读回到主内存中。

在redis配置文件中设置
vm-enabled yes            #开启vm功能
vm-swap-file  /tmp/redis.swap    #交换出来的value保存的文件路径
vm-max-memory 1000000    #redis使用的最大内存上限
vm-page-size 32            #每个页面的大小32字节
vm-pages 134217728        #最多使用多少页面
vm-max-threads 4        #用于执行value对象换入患处的工作线程数量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值