• 听雷哥浅谈Redis


    Linux下安装redis

    1、下载源码,解压缩后编译源码

    $ wget http://download.redis.io/releases/redis-2.8.3.tar.gz

    $ tar xzf redis-2.8.3.tar.gz

    $ cd redis-2.8.3

    $ make  make install

     2、编译完成后,在Src目录下,有四个可执行文件redis-server、redis-benchmark、redis-cli和redis.conf。然后拷贝到一个目录下

    mkdir /usr/redis

    cp redis-server  /usr/redis

    cp redis-benchmark /usr/redis

    cp redis-cli  /usr/redis

    cp redis.conf  /usr/redis

    cd /usr/redis

    3、启动Redis服务。

    $ redis-server   redis.conf

    4、然后用客户端测试一下是否启动成功。

    $ redis-cli

    redis> set foo bar

    OK

    redis> get foo

    "bar"

    redis操作

    string数据类型

    set name zhilei

    get name

    setnx   #如果key不存在则设置,如果存在,则返回0

    setex  name 10 zhilei  #声明一个变量,且加上超时时间

    set email  wangzhilei@jd.com #对于这个声明好的变量进行部分内容进行更改

    setrange  email 3 wulong@jd.com

    get email  

    wangwulongok@jd.com

    mset name zhilei age 10  #批量的赋值

    msetnx  #批量设置,如果有一个key存在的话,则返回0

    mget name age  #批量的取值

    incr age #让一个值递增1          

    incrby age 10  #让一个值递增固定的值      

    decr age #让一个值递减

    decrby age 100 #让一个值递减固定的值

    getset name  yinchao #重新给一个变量赋值,但是返回原来的变量的值

    getrange email 0 6  #返回一个字符串的部分内容

    append name aa #给一个key加入相关的内容

    strlen name    #获取一个key的值的长度

    hashes 类型

    hset      #设置

    hsetnx    #如果不存在的话,则设置

    hget      #获取

    hmset     #批量赋值

    hmget     #批量获取

    hlen      #显示字段的个数

    hincrby   #递增

    hexists   #判断hashed key是否存在 如果存在的话,则返回1,如果不存在的话,则返回0

    hkeys     #返回hashed下面所有的字段

    hvals     #返回hashes对象下面所有的值

    hgetall   #key val 一起获取

    hdel      #删除hash对象下面某个key的某个字段

    list类型

    栈存入

    lpush list1  zhilei 10   #向栈里面加入两个值

    lrange list1 0 -1       #取这个栈内的数据

    队列存入

    rpush

    Linsert list1 before “one” “two”  #插入

    Lset                          #将一个值修改

    Lrem                         #删除队列中几个相内的内容

    Ltrim                         #删除非指定key范围内的值 ,其它的都删除

    Lpop                         #从list从头弹出一个元素

    Rpop                         #从尾部弹出

    Rpoplpush                    #将一个链表的尾部的元素弹出,赋给第二个链表的头部

    Lindex                        #按索引来取值

    Sets与zset类型 (集合数据类型)  注意:集合内部不能有重复的值

    特点:无序

    方法

    Sadd  name zhilei   #给name集合设置值

    Smembers name     #取name集全下面所有的值

    Srem   name zhieli  #删除name集合下面的zhilei

    Spop   name       #随机的弹出一个值,(删除弹出的值)

    Sdiff   set1 set2             #两个集合的差集

    Sdiffstore  set3 set1 set2     #将前两个集合差集存到set3中

    Sinter   set1 set2           #取两个集合的交集

    Sinterstore    set1 set2 set3  #将后面的两个集合的交集存话到set1中

    Sunion     set1  set2       #取两个集合的并集

    Sunionstore  set3 set1 set2   #两set1 set2两个并集到set3中

    Smove  set1 set2  name    #将第一个集合内的一个值放到set2中

    Scard                       #查看集合内元素的个数

    Sismember    set1 one              #判断一个元素是否为一个集合的元素

    Srandmember    set1            #随机取一个元素,但不删除元素

    有序集合 stored sets

    Zadd   #添加元素  例:Zadd  class 1 one

    Zrange class 0 -1 withscores   #取值(withscores将排行号给取出来 )

    Zrem class one         #删除一个元素,返回1的话 则代表删除成功

    Zincrby                #给指定的顺序增加 例子:zincrby zsets  3 one   将集合zsets 中元素one的排序加上3

    Zrank                  #按score排序列从小到大排序 ,并返回一个元素的索引      这个是按score的升序来排序

    Zrevrank               #按排序列从大到小排序 ,并返回一个元素的索引            这个是按score的降序来排序

    Zrevrange              #倒序,然后取索引范围  withscores 加上排序值   也就是说这个是按索引来倒过来排序

    Zrangebyscore         #按排序范围值来取

    Zcount                #返回区间内空的个数  也是按score来取个数

    Zcard                         #返回集合中所有的元素的个数

    Zremrangebyrank   set1 0 1  #按索引来删除

    Zremrangebyscore  #set 0 2  #按排序来删除

    Redis常用命令

    Keys *  输出所有的键

    Exists   #判断一个键是否存在

    Del    #删除一个键

    Expire  #设置一个键的过期时间

    Ttl      #查看一个key的过期时间

    Move  age 1   #将一个数据库的key age 剪切到1数据库

    Persist age      #取消过期

    Randomkey      #随机返回一个key

    Rename         #给一个key重命名

    Type            #返回key的数据类型

    服务器相关的命令

    Ping

    Echo   

    Select  0-15  共15个数据库

    Quit 或者是 exit

    Dbsize     #返回当前数据中key总量

    Info       #获取服务器的信息

    Config get  #实时传储收到请求

    Flushdb    #删除当前数据库所有库

    Flushall    #删除所有数据库的所有key

    Redis高级应用

    1. 1.   安全性
    2. 2.   主从复制
    3. 3.   事务处理
    4. 4.   持久化机制
    5. 5.   发布订单消息
    6. 6.   虚拟内存的使用

    安全性:

    在配置文件中 修改requirepass 后面直接是redis密码

    Auth passwd 来登录进去 或者是登录时候 用  -a 密码

    主从复制:

    1. 在从机配置slaveof
    2. 配置masterauth 
    3. 判断哪个是主 哪个是从只要命令info

    Redis事务处理

    Multi

    中间是事务的内容

    如果想回滚discard

    Exec

    乐观锁

    用watch来监控一个key,并执行事务,这个时候,如果有另外的一个session来改变这个key值,则这个key版本的值已经不是最新的了,这样的话,则事务则不会执行成功

    相当于svn 与givhub  如果服务器上面的版本为4 如果将上传的版本改为3,则不能上传成功,必须为4以上的版本

    例:

    Session1:

    127.0.0.1:6379> get name

    "aaaaaa"

    127.0.0.1:6379> WATCH name

    OK

    127.0.0.1:6379> multi

    OK

    127.0.0.1:6379> set name zongbin

    QUEUED

    127.0.0.1:6379> exec

    (nil)

    Session 2:

    Set name newword

    Redis持久化机制

    两种方式:

    Snapshotting 快照 相当于mysqldump

    Append-only file 缩写aof的方式 给操作进行备份 相当于mysql中的bin-log日志

    消息发布与订阅

    Session1发布如下Publish  message1  hello

    Session2 订阅如下Subscribe message

    虚拟内存  2.6之后就弃用了

                  

    php-redis扩展安装方法

    PHP 使用 Redis

    安装

    开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/phpredis/phpredis/releases。

    PHP安装redis扩展

    以下操作需要在下载的 phpredis 目录中完成:

    $ wget https://github.com/phpredis/phpredis/archive/2.2.4.tar.gz

    $ cd phpredis-2.2.7                      # 进入 phpredis 目录

    $ /usr/local/php/bin/phpize              # php安装后的路径

    $ ./configure --with-php-config=/usr/local/php/bin/php-config

    $ make && make install

    如果你是 PHP7 版本,则需要下载指定分支:

    git clone -b php7 https://github.com/phpredis/phpredis.git

    修改php.ini文件

    vi /usr/local/php/lib/php.ini

    增加如下内容:

    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626"

    extension=redis.so

    安装完成后重启php-fpm 或 apache。查看phpinfo信息,就能看到redis扩展。

    PHP 使用 Redis

    连接到 redis 服务

    <?php

        //连接本地的 Redis 服务

       $redis = new Redis();

       $redis->connect('127.0.0.1', 6379);

       echo "Connection to server sucessfully";

             //查看服务是否运行

       echo "Server is running: " . $redis->ping();

    ?>

    执行脚本,输出结果为:

    Connection to server sucessfully

    Server is running: PONG

    Redis PHP String(字符串) 实例

    <?php

       //连接本地的 Redis 服务

       $redis = new Redis();

       $redis->connect('127.0.0.1', 6379);

       echo "Connection to server sucessfully";

       //设置 redis 字符串数据

       $redis->set("tutorial-name", "Redis tutorial");

       // 获取存储的数据并输出

       echo "Stored string in redis:: " . $redis->get("tutorial-name");

    ?>

    执行脚本,输出结果为:

    Connection to server sucessfully

    Stored string in redis:: Redis tutorial

    Redis PHP List(列表) 实例

    <?php

       //连接本地的 Redis 服务

       $redis = new Redis();

       $redis->connect('127.0.0.1', 6379);

       echo "Connection to server sucessfully";

       //存储数据到列表中

       $redis->lpush("tutorial-list", "Redis");

       $redis->lpush("tutorial-list", "Mongodb");

       $redis->lpush("tutorial-list", "Mysql");

       // 获取存储的数据并输出

       $arList = $redis->lrange("tutorial-list", 0 ,5);

       echo "Stored string in redis";

       print_r($arList);

    ?>

    执行脚本,输出结果为:

    Connection to server sucessfully

    Stored string in redis

    Redis

    Mongodb

    Mysql

    Redis PHP Keys 实例

    <?php

       //连接本地的 Redis 服务

       $redis = new Redis();

       $redis->connect('127.0.0.1', 6379);

       echo "Connection to server sucessfully";

       // 获取数据并输出

       $arList = $redis->keys("*");

       echo "Stored keys in redis:: ";

       print_r($arList);

    ?>

    执行脚本,输出结果为:

    Connection to server sucessfully

    Stored string in redis::

    tutorial-name

    tutorial-list

  • 相关阅读:
    浏览器为何禁止跨域(同源策略)
    viewPager
    How to remove focus without setting focus to another control?
    android ANR
    解决Ubuntu系统中文乱码显示问题
    USB 3.0规范中译本 第6章 物理层
    库&框架-----CDN网络引用总结
    18_如何排错
    17_今日回顾
    16_sql注入的原理及处理
  • 原文地址:https://www.cnblogs.com/leigepython/p/8595885.html
Copyright © 2020-2023  润新知