redis Q&A

作者: X1_blog | 来源:发表于2020-05-07 23:12 被阅读0次

    概念:

    是一个分布式key-value数据库, 可以脱离mysql 独立运行, 端口6379

    redis 各类型的使用场景

    string -> key: string -> 记录最大用户ID/定时计数器 -> 存储简单的数据

    list -> key: [a,b,a...] -> 消息队列/时间轴/循环链表(rpoplpush) -> 按时间排序的内容

    set -> key: [a,b,c...]-> 存储点赞的用户ID/计算好友关系/(互相关注/共同关注)(sinter)/ 构造倒排索引(前缀搜索功能)-> 存储唯一的数据

    eg: set 's' [steve_id ,selena_id ], 检索s可以访问steve 和 selena的用户信息, 实现前缀检索

    sorted set -> key: string -> 热度排行榜 -> 需要根据某个指标排序的内容

    hash -> key: string -> 存储用户信息 -> 存储不需要排序的详细信息映射

    redis 一共支持5种数据类型

    string , list , set , sortedset, hash

    redis 和memcache的区别?

    1. Redis支持数据的持久化
    2. redis 提供了更多的数据类型 : list , set ,sortset, hash
    3. redis 支持数据备份 (save/bgsave)

    redis持久化2种方式

    redis持久化有rdb和aof 两种方式, rdb 的一致性 和完整性比较差; aof完整性更好, 但是使用时间长会导致文件过大, 恢复效率低

    redis 命令行密码登录

    redis-cli -h localhost -a 你的密码

    redis的作用有哪些,什么时候使用redis?

    ...

    redis 主从复制

    ...

    php 连接redis的方法

    1. 安装phpredis 扩展
    2. 连接redis
     yum install php-pecl-redis5 -y # 安装扩展  
    
    # 连接测试
     $redis = new Redis();
     $redis->connect('127.0.0.1', 6379);
     echo "Connection to server successfully"."\n";
     echo "Server is running: " . $redis->ping()."\n";
    

    设置登录密码

    config set requirepass 123  # 设置登录密码(临时)
    # redis.conf 找到 requirepass, 设置密码为123
    requirepass 123
    # 分配客户端ip
    bind 192.168.1.100
    # 启动并指定配置文件
    redis ./redis.conf  
    

    Demo:

    <?php
        $redis = new Redis();
        $redis->connect('127.0.0.1', 6379);
        $redis->auth('123');
        echo "Connection to server successfully"."\n";
        echo "Server is running: " . $redis->ping()."\n";
    
        # string
        $redis->set("key","value");         # 插入值
        echo $redis->get("key")."\n";       # 取值
        
        # set
        $redis->sadd("set","1");            # 插入值
        $redis->sadd("set","2");
        $redis->sadd("set","2");
        $redis->spop("set","1");            # 弹出值
        print_r( $redis->smembers("set"));
        
        # sorted set
        $redis->zadd("sset1",6,"redis");        # 插入元素
        $redis->zadd("sset1",7,"mongodb");
        $redis->zadd("sset1",8,"mysql");        # 重复无效, 被覆盖
        $redis->zadd("sset1",9,"mysql");
        print_r( $redis->zrange("sset1",0,-1,"withscores"));        # 排序输出
        print_r( $redis->zrevrange("sset1",0,-1,"withscores"));     # 逆排序输出
        print_r( $redis->zscore("sset1","mysql"));                  # 输出权重
        print_r( $redis->zrank  ("sset1","redis"));                 # 输出当前元素排位
        print_r( $redis->zrevrank ("sset1","redis"));               # 输出当前元素逆排位
        echo  "\n\n";
        
        # list  
        $redis->ltrim("list",1,0);      # 清空list
        $redis->lpush("list","1a");     # 插入元素
        $redis->lpush("list","2b");
        $redis->lpush("list","1a");
        $redis->lpop("list");           # 弹出元素
        echo $redis->llen("list")."\n";     # 返回list长度
        print_r( $redis->lrange ("list",0,-1));     # 返回整个list
        
        
        # hash
        $redis->del('hash');                    # 清空哈希表
        $redis->hset('hash','key1','value1');
        $redis->hset('hash','key2','value2');
        $redis->hset('hash','key3','value3');
        print_r( $redis->hkeys ("hash"));       # 返回所有键
        
        $redis->hdel('hash','key1','key2');     # 删除多个键
        
        var_dump( $redis->Hexists('hash','key31') );        # 判定键是否存在
        var_dump( $redis->hget ("hash","key2"));            # 取值
        print_r( $redis->hgetall ("hash"));                 # 返回整个hash
    

    相关文章

      网友评论

          本文标题:redis Q&A

          本文链接:https://www.haomeiwen.com/subject/mrrtghtx.html