redis學習筆記

從新複習兄弟連redis視頻課程,爲了便於記憶,記錄一下筆記:php

redis應用場景:redis

  1. 取最新N個數據。
    數據庫

  2. 排行榜,Top N.緩存

  3. 精確設置過時時間的應用。安全

  4. 計數器應用,新浪微博主要應用。app

  5. Uniq操做,獲取某段時間數據排重值。dom

  6. 實時操做,反垃圾系統。ui

  7. Pub/Sub消息系統。spa

  8. 隊列orm

  9. 緩存

Redis下載安裝:redis.io/download

#tar -zxvf redis.tar.gz

#cd redis

#make(32位機器make CFLAGS="-march=i686")

#cd src

#make install

注意,不須要config,make install 須要進入src目錄。因爲redis不能指定安裝目錄須要本身整理

#mkdir -p /usr/local/redis/bin  /usr/local/redis/etc

#mv redis.conf /usr/local/redis/etc

#mv mkreleasehdr.sh redisbenchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

redis默認端口6379

啓動服務 #/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

修改 daemonize yes  後臺啓動

客戶端鏈接 #/usr/local/redis/bin/redis-cli

中止:

 #/usr/local/redis/bin/redis-cli shutdown

#pkill redis-server 

>keys * 顯示全部key

>exists key 是否存在

>del key 刪除

>expire key 10 設置key10秒期

>ttl key 查看key過時剩餘時間

>persist key 轉爲不過時

>select 0 選擇到0數據庫

>move key 1  移動到1數據庫

>randomkey 隨機返回key

>rename key key_new

>type key 

服務命令

>ping

>echo 'ggo'

>dbsize   key的數目

>info     信息

>config get * 配置獲取

>flushdb 清空當前數據庫

>flushall 清空全部數據庫

安全性設置

修改redis.conf requirepass 

>auth password 

redis-server -a password

操做

1.string

>set name jim

>get name

>set name jim green

>setnx name jim

>setex color 10 red

>set email test@sina.com

>setrange email 5 sohu.com

>mset k1 v1 k2 v2

>msetnx 

>getset 設置key的值,返回舊值

>getrange email 0 4   獲取子字符串

>mget key1 key2 key3

>incr key

>incrby key 3

>incrby key -5  //減

>decr key

>decrby key 2 減

>decrby key -5 加

>append key str

>strlen key

2 hash  添加刪除都是O(1),適合存儲對象,比string佔用內存更少

>hset hashtable field value

>hget hashtable field

>hsetnx hashtable field value

>hmset hashtable field1 value1 field2 value2 .....

>hmget hashetale field1 field2 ...

>hincrby hashetale age -3

>hexists user:001 age

>hlen hashtable

>hgetall user:001

>hdel user:001 age

>hkeys myhash

>hvals myhash

3. list  棧,隊列

>lpush mylist val

>lrange mylist 0 -1  從頭至尾

>lpop mylist

>rpush  rpop

>linsert mylist before world my

>linsert mylist after world my

>lset mylist 0 your  //0表示左邊第一位 修改成your

> lrem mylist 1 your //刪除1個your  ,若是是0 ,刪除全部

>ltrim mylist 1 -1  //保留1以後的值,也就是刪除最左邊的

>rpoplpush list1 list2

>rpoplpush list1 list1

>lindex list1 0  返回指定位置的元素

>llen list1

4 set-string的無序集合,添加刪除,查找都是O(1)

>sadd set1 hello

>smembers set1

>srem set1 hello

>spop set1  //隨機彈出

>sdiff set1 set2 set3

>sdiffstore set4 set1 set2 //set1,set2的差集存到set4

>sinter set1 set2

>sinterstore set5 set1 set2

>sunion set1 set2

>sunionstore set6 set1 set2

>smove set2 set1 two  //set2中two移到set1

>scard set1  元素個數

>sismember set1 one

>srandmember set1 //隨機返回不刪除

有序集合

>zadd zset1 1 one

>zrange zset1 0 -1 withscores

>zrem zset1 one

>zincrby zset1 2 one

>zrank zset1 one   獲取順序值,按照score排序

>zrevrank zset1 one  按照score排序從大到小排序的順序值

>zrevrange zset1 0 -1 withscores

>zrangebyscore zset1 1 3 withscores

>zcount zset1 1 5   返回score 在1-5的元素個數

>zcard zset1

>zremrangebyrank zset1 0 1



<?php

try {


    $redis = new Redis();

    $ret = $redis->connect('localhost');

    if ($ret === false) {

die($redis->getLastError());

    }

 

    $ret = $redis->auth('123456');

    if ($ret === false) {

die($redis->getLastError());

    }

 

    

    //$redis->flushdb();

    $ret = $redis->set("key", "value");

    if ($ret === false) {

die($redis->getLastError());

    } else {

echo "OK";

        echo '<br/>';

        $ret = $redis->get("key");

        print_r($ret);

        echo '<hr/>keys:<br/>';

        $keys = $redis->keys('*');

        var_dump($keys);


       echo '<hr/>db size:<br/>';

        echo $redis->dbSize();

        echo '<hr/>db info:<br/>';

        $info = $redis->info();

        print_r($info);


        echo '<hr/>dbindex:<br/>';

        $dbindex = $redis->select(4);

        var_dump($dbindex);

        echo '<hr/>db size:<br/>';

        echo $redis->dbSize();

        echo '<hr/>db info:<br/>';

        $info = $redis->info();

        print_r($info);

        $redis->hMset('test',array('key1'=>'v1','key2'=>'v2'));

        echo '<hr/>keys:<br/>';

        $keys = $redis->keys('*');

        var_dump($keys);

        $dbindex = $redis->getDBNum();

        echo '<hr/>db index:<br/>';

        var_dump($dbindex);

    }

 

} catch (RedisException $e) {

    die("Uncaught exception " . $e->getMessage());

}

相關文章
相關標籤/搜索