zoukankan      html  css  js  c++  java
  • 非关系数据库之redis入门到实战(1)Redis高级应用

    1.安全性

     

    设置密码:

    vi /alidata/server/redis-3.2.1/redis.conf

    1
    [root@iZ28c6xv2w0Z redis-3.2.1]# vi /alidata/server/redis-3.2.1/redis.conf

    找到:requirepass

    1
    2
    # requirepass foobared
    requirepass 123456

    重新启动数据库:

    1
    2
    [root@iZ28c6xv2w0Z redis-3.2.1]# pkill redis-server
    [root@iZ28c6xv2w0Z src]# ./redis-server /alidata/server/redis-3.2.1/redis.conf

    进入客户端并执行命令,提示没有权限:

    1
    2
    3
    [root@iZ28c6xv2w0Z src]# ./redis-cli
    127.0.0.1:6379> keys *
    (error) NOAUTH Authentication required.

    输入密码:

    aoth 123456

    1
    2
    3
    4
    5
    6
    127.0.0.1:6379> auth 123456
    OK
    127.0.0.1:6379> set name xiaoming
    OK
    127.0.0.1:6379> keys *
    1) "name"

    登录时即输入密码:

    ./redis-cli -a 123456

    添加-a输入密码

    1
    2
    3
    [root@iZ28c6xv2w0Z src]# ./redis-cli -a 123456
    127.0.0.1:6379> keys *
    1) "name"

    2.主从复制

    3.事务处理

    开启事务:

    multi

    其他命令..

    执行:

    exec

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set age 19
    QUEUED
    127.0.0.1:6379> set age 20
    QUEUED
    127.0.0.1:6379> exec
    1) OK
    2) OK
    127.0.0.1:6379> get age
    "20"

    取消事务(回滚):

    discard

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    127.0.0.1:6379> get age
    "20"
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set age 17
    QUEUED
    127.0.0.1:6379> discard
    OK
    127.0.0.1:6379> get age
    "20"

    乐观锁:

    watch age        开启监视

    unwatch           清除所有监视,断开连接也会清除所有监视

    4.持久化机制

    snapshotting方式(默认):

    默认名为dump.rdb

    1
    2
    3
    save 900 1    #900秒中有一个键被修改保存一次
    save 300 10    #300秒中有十个健被修改保存一次
    save 60 10000    #60秒中有10000个健被修改保存一次

    aof方式:

    配置文件中:

    1
    [root@iZ28c6xv2w0Z src]# vi /alidata/server/redis-3.2.1/redis.conf

    appendonly yes    #启用aof持久化

    appendfsync always    #收到命令立即写入磁盘,最慢,但保证完全持久化

    appendfsync everysec    #每秒写入磁盘一次,性能与持久化折中

    appendfsync no    #完全依赖os,性能最好,持久化没保证

    1
    2
    3
    # appendfsync always
    appendfsync everysec
    # appendfsync no

    配置完成后重启redis

    在src下会有一个名为 appendonly.aof 文件

    5.发布订阅消息

    发布消息:

    publish tv1 xiaoming

    返回的值为监听人数。

    1
    2
    127.0.0.1:6379> publish tv1 xiaoming
    (integer) 1

     

    监听消息:

    subscribe tv1 tv2

    在客户端二收到的消息:

    1
    2
    3
    4
    5
    6
    7
    8
    127.0.0.1:6379> subscribe tv1
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "tv1"
    3) (integer) 1
    1) "message"
    2) "tv1"
    3) "xiaoming"

    6.虚拟内存的使用

    虚拟内存配置:

    1
    [root@iZ28c6xv2w0Z src]# vi /alidata/server/redis-3.2.1/redis.conf

    添加如下配置:

    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对象换入的工作线程数量

    配置好后重启

  • 相关阅读:
    Asp.Net MVC Control向View传值
    初学MyBatis.net
    win10更新后,可以远程桌面ping也没问题,但是无法访问共享文件夹的解决方法
    我的常用自定义函数
    获取图片大小
    python获取文件路径、文件名、后缀名的实例
    Python-Selenium中chromeDriver限制图片和Javascript加载
    精华 selenium_webdriver(python)调用js脚本
    安装程序无法使用现有分区 因为它没有包含所需的空间?怎么办?
    我们无法创建新的分区 也找不到现有的分区 已解决【亲测有效】
  • 原文地址:https://www.cnblogs.com/huanghanyu/p/13807828.html
Copyright © 2011-2022 走看看