zoukankan      html  css  js  c++  java
  • redis入门基础

    • 环境: centos

    一、安装

    sudo su
    cd
    wget http://labfile.oss.aliyuncs.com/courses/106/redis-2.8.4.tar.gz
    tar -xzvf redis-2.8.4.tar.gz
    cd redis-2.8.4
    make
    

    几个文件:

    • 服务端:src/redis-server
    • 客户端:src/redis-cli
    • 默认配置文件:redis.conf
    # 设置环境变量
    cp redis-server /usr/local/bin/
    cp redis-cli /usr/local/bin/
    
    # 运行测试
    cd /root/redis-2.8.4
    make test
    
    # 启动redis-server
    redis-server
    

    二、服务命令

    1. 使用服务启动redis服务: sudo service reids-server start
    2. 查看redis状态 : ps -ef | grep redis , netstat -nlt|grep 6379
    3. redis-cli 交互环境乱码: redis-cli --raw

    三、数据类型

    帮助命令

    help set    # 查看set命令的帮助
    

    1. string

    • set key value: 创建
    • get key: 索引
    $ sudo service redis-server start
    $ sudo su
    $ cd
    $ redis-cli
    > set mykey somevalue
    > get mykey
    

    加法器

    > set counter 100                   # 初始化
    > incr counter                      # +1
    > incr counter                      # +1
    > incrby counter 50                 # +50 自定义计数
    
    • incr 让value成为一个整数, 并加法
    • decr decrby 减法
    > mset key1 value1 key2 value2      # 批量创建
    > mget key1 key2                    # 批量索引
    

    2. lists

    线性有序

    如列表 mylist

    # push 操作
    > rpush mylist A                    # 插入元素到尾部
    > rpush mylist B
    > lpush mylist first                # 插入新元素到头部
    > lrange mylist 0 -1                # 索引, 0 是第一个, -1是倒数第一, -2 是倒数第二...
    
    # pop 操作, 弹出(删除)
    
    > rpop mylist                       # 从右边弹出一个元素
    > lpop mylist                       # 从左边弹出一个元素
    > del mylist                        # 删除
    

    list 存在阻塞

    3. hashes(散列)

    字符串字段和字符串值之间的映射;

    > hmset user:1000 username xiaoming birthyear 2019 verfied 1
                                        # 创建一个多域的hash表
    > hget user:1000 username           # 获取指定单域
    > hget user:1000 birthyear
    > hgetall user:1000                 # 获取key的所有信息
    
    > hincrby user:1000 birthyear 10    # 修改增加了10
    

    4. 无序集合 set

    不允许宝行相同的成员的属性(非常方便去重);
    以O(1)时间复杂度完成添加删除及测试元素是否存在

    > sadd myset 1 2 3                  # 创建一个无序集合myset
    > sismember myset                   # 查看集合是否存在, 成功1,失败0
    

    5. 有序集合

    无重复元素的字符串集合, 不同之处是有序集合每个成员都关联了一个权值;
    成员唯一, 但权值可重

    > zadd hackers 1990 "a"
    > zadd hackers 1995 "df"
    > zadd hackers 1900 "ddz"
    
    > zrange hackers 0 -1               # 查看
    > zreverange hackers 0 -1           # 反序查看
    > zrange hackers 0 -1 withscores    # 返回记录值
    

    四、常用命令

    1. exists and del
    • exists key: 判断 key是否存在 存在1, 否0;
    • del key: 删除key, 成功1,失败0(key不存在)
    1. type and keys
    • type key: 返回元素数据类型(string,list, set, zset,hash)
    • keys key-pattern: 返回匹配key的列表, 如 keys ming* (返回以ming开头的keys)
    1. randomkey and clear
    • randomkey: 随机获取一个已存在的key
    • clear: 清除界面
    1. rename and renamenx
    • raname oldname newname: 重命名; newname存在则会覆盖
    • renamenx oldname newname: 重命名; newname存在则失败
    1. dbsize
    • dbsize: 返回key总数

    五、时间相关命令

    1. 限定key生存时间
    • expire key seconds
    1. 查询key剩余生存空间
    • ttl key
    1. 清除key
    • flushdb: 清空当前库中的所有键
    • flushall: 清空所有库中的所有键

    六、设置相关命令

    redis配置文件

    • config get: 读取运行的redis服务器的配置参数
    • config set: 更改

    如:

    config get requirepass              # 查看密码
    config set requirepass 123456       # 设置密码位123456
    auth 123456                         # 认证密码
    
    config get *                        # 查看所有(匹配)
    
    • config resetstat充值数据统计报告

    七、查询信息

    • info [section]: 查询redis相关信息
    [section]
    
    server                              # Redis server 的常规信息
    clients                             # Client 的连接选项
    memory                              # 存储占用相关信息
    persistence                         # RDB and AOF 相关信息
    stats                               # 常规统计
    replication                         # Master/Slave 请求信息
    cpu                                 # CPU 占用信息统计
    cluster                             # Redis 集群信息
    keyspace                            # 数据库信息统计
    all                                 # 返回所有信息
    default                             # 返回常规设置信息
    

    八、安全

    密码配置文件 redis.conf

    $ sudo service redis-server restart # 重启
    
    • 密码认证(登录)
    $ redis-cli
    > auth 密码
    或
    $redis-cli -a 密码
    

    九、主从复制

    分担服务器压力, 部署多台服务器,, 分别用于缓存的读和写,
    用于写的为主服务器, 读的为从服务器;

    建立主从关系:

    # slave 端执行命令
    # slaveof ipaddress:port
    > slaveof 127.0.0.1:6379
    
    # 如何master服务器设置了密码,则需要在从服务器中设置好密码
    > config set masterauth <password>
    

    十、事务处理

    当client 发送multi命令后进入事务, 后续命令不会执行, 而是存放到队列中, 执行exec后 redis按顺序执行队列中的命令;

    (实际中不能依赖redis事务保证数据一致性)

    > multi
    > set name a
    > set name b
    > exec
    > get name
    

    十一、持久化机制

    将内存中的数据长久存到磁盘中;

    两种方式:

    1. snapshotting (快照), 将数据存到文件里;
    • save 900 1: 900s内如果超过1个key被修改, 则发起快照保存
    1. Append-only file (aof), 将读写操作放到文件中;
    # 配置文件
    appendonly yes                          //启用 aof 持久化方式
    
    # appendfsync always                    //收到写命令就立即写入磁盘,最慢,但是保证了数据的完整持久化
    
    appendfsync everysec                    //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
    
    # appendfsync no                        //完全依赖 os,性能最好,持久化没有保证
    

    虚拟内存, 在2.6以上版本取消了(在后面的版本由redis自身管理)

    十二、参考

  • 相关阅读:
    Linux实用命令之git-svn
    Linux实用命令之xdg-open
    记一个logrotate的配置文件权限问题
    日常开发技巧:x11-forward,使用远程机器的gui程序
    【机器学习】PCA
    【PyTorch】Tricks 集锦
    【Python】itertools之product函数
    强化学习——值迭代和策略迭代
    PyTorch中MaxPool的ceil_mode属性
    猫狗识别——PyTorch
  • 原文地址:https://www.cnblogs.com/52liming/p/10493342.html
Copyright © 2011-2022 走看看