標籤:[1] window 網路 store 字元 mys 添加元素 sorted 存在
Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。
Redis支援的資料類型有 Stirng(字串), List(列表), Hash(字典), Set(集合), Sorted Set(有序集合);
redis版本是Redis 2.6.12 系統是在Windows+Apache2.4+php5.6
串連:
1 //執行個體化redis2 $redis = new Redis();3 //串連4 $redis->connect(‘127.0.0.1‘, 6379);5 //檢測是否串連成功6 echo "Server is running: " . $redis->ping();7 // 輸出結果 Server is running: +PONG
Strng(字串):
// 設定一個字串的值 $redis->set(‘cat‘, 111); //擷取一個字串的值 echo $redis->get(‘cat‘); // 111 // 重複set $redis->set(‘cat‘, 222); echo $redis->get(‘cat‘); // 222
List(列表):
1 //列表 2 //儲存資料到列表中 3 $redis->lpush(‘list‘, ‘html‘); 4 $redis->lpush(‘list‘, ‘css‘); 5 $redis->lpush(‘list‘, ‘php‘); 6 7 //擷取列表中所有的值 8 $list = $redis->lrange(‘list‘, 0, -1); 9 print_r($list);echo ‘<br>‘; 10 11 //從右側加入一個12 $redis->rpush(‘list‘, ‘mysql‘);13 $list = $redis->lrange(‘list‘, 0, -1);14 print_r($list);echo ‘<br>‘;15 16 //從左側彈出一個17 $redis->lpop(‘list‘);18 $list = $redis->lrange(‘list‘, 0, -1);19 print_r($list);echo ‘<br>‘;20 21 //從右側彈出一個22 $redis->rpop(‘list‘);23 $list = $redis->lrange(‘list‘, 0, -1);24 print_r($list);echo ‘<br>‘;25 26 // 結果27 // Array ( [0] => php [1] => css [2] => html )28 // Array ( [0] => php [1] => css [2] => html [3] => mysql )29 // Array ( [0] => css [1] => html [2] => mysql )30 // Array ( [0] => css [1] => html )
1 <?php 2 //執行個體化redis 3 $redis = new Redis(); 4 //串連 5 $redis->connect(‘127.0.0.1‘, 6379); 6 //列表 7 //儲存資料到列表中 8 $redis->lpush(‘list‘, ‘html‘); 9 $redis->lpush(‘list‘, ‘css‘);10 $redis->lpush(‘list‘, ‘php‘);11 $redis->lpush(‘list‘, ‘mysql‘);12 $redis->lpush(‘list‘, ‘javascript‘);13 $redis->lpush(‘list‘, ‘ajax‘);14 15 //擷取列表中所有的值16 $list = $redis->lrange(‘list‘, 0, -1);17 print_r($list);echo ‘<br>‘; 18 19 //擷取列表的長度20 $length = $redis->lsize(‘list‘);21 echo $length;echo ‘<br>‘;22 23 //返回列表key中index位置的值24 echo $redis->lget(‘list‘, 2);echo ‘<br>‘;25 echo $redis->lindex(‘list‘, 2);echo ‘<br>‘;26 27 //設定列表中index位置的值28 echo $redis->lset(‘list‘, 2, ‘linux‘);echo ‘<br>‘;29 $list = $redis->lrange(‘list‘, 0, -1);30 print_r($list);echo ‘<br>‘;31 32 //返回key中從start到end位置間的元素33 $list = $redis->lrange(‘list‘, 0, 2);34 print_r($list);echo ‘<br>‘;35 36 $list = $redis->lgetrange(‘list‘, 0, 2);37 print_r($list);echo ‘<br>‘;38 39 //截取鏈表中start到end的元素
//截取列表後列表發生變化,列表保留截取的元素,其餘的刪除40 $list = $redis->ltrim(‘list‘, 0, 1);41 print_r($list);echo ‘<br>‘;42 43 $list = $redis->lrange(‘list‘, 0, -1);44 print_r($list);echo ‘<br>‘;45 // 結果46 // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css [5] => html )47 // 648 // mysql49 // mysql50 // 151 // Array ( [0] => ajax [1] => javascript [2] => linux [3] => php [4] => css [5] => html )52 // Array ( [0] => ajax [1] => javascript [2] => linux )53 // Array ( [0] => ajax [1] => javascript [2] => linux )54 // 155 // Array ( [0] => ajax [1] => javascript )
1 <?php 2 //執行個體化redis 3 $redis = new Redis(); 4 //串連 5 $redis->connect(‘127.0.0.1‘, 6379); 6 //列表 7 //儲存資料到列表中 8 $redis->lpush(‘list‘, ‘html‘); 9 $redis->lpush(‘list‘, ‘html‘);10 $redis->lpush(‘list‘, ‘html‘);11 $redis->lpush(‘list‘, ‘css‘);12 $redis->lpush(‘list‘, ‘php‘);13 $redis->lpush(‘list‘, ‘mysql‘);14 $redis->lpush(‘list‘, ‘javascript‘);15 $redis->lpush(‘list‘, ‘html‘);16 $redis->lpush(‘list‘, ‘html‘);17 $redis->lpush(‘list‘, ‘html‘);18 $redis->lpush(‘list‘, ‘ajax‘);19 20 //擷取列表中所有的值21 $list = $redis->lrange(‘list‘, 0, -1);22 print_r($list);echo ‘<br>‘; 23 24 //刪除列表中count個值為value的元素25 //從左向右刪26 $redis->lrem(‘list‘, ‘html‘, 2);27 $list = $redis->lrange(‘list‘, 0, -1);28 print_r($list);echo ‘<br>‘; 29 30 //從右向左刪31 $redis->lrem(‘list‘, ‘html‘, -2);32 $list = $redis->lrange(‘list‘, 0, -1);33 print_r($list);echo ‘<br>‘; 34 35 //刪除所有36 $redis->lrem(‘list‘, ‘html‘, 0);37 $list = $redis->lrange(‘list‘, 0, -1);38 print_r($list);echo ‘<br>‘;39 40 // 結果41 // Array ( [0] => ajax [1] => html [2] => html [3] => html [4] => javascript [5] => mysql [6] => php [7] => css [8] => html [9] => html [10] => html )42 // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html [7] => html [8] => html )43 // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html )44 // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css )
Hash(字典):
1 <?php 2 //執行個體化redis 3 $redis = new Redis(); 4 //串連 5 $redis->connect(‘127.0.0.1‘, 6379); 6 //字典 7 //給hash表中某個key設定value 8 //如果沒有則設定成功,返回1,如果存在會替換原有的值,返回0,失敗返回0 9 echo $redis->hset(‘hash‘, ‘cat‘, ‘cat‘);echo ‘<br>‘;10 echo $redis->hset(‘hash‘, ‘cat‘, ‘cat‘);echo ‘<br>‘;11 echo $redis->hset(‘hash‘, ‘cat‘, ‘cat1‘);echo ‘<br>‘;12 echo $redis->hset(‘hash‘, ‘dog‘, ‘dog‘);echo ‘<br>‘;13 echo $redis->hset(‘hash‘, ‘bird‘, ‘bird‘);echo ‘<br>‘;14 echo $redis->hset(‘hash‘, ‘monkey‘, ‘monkey‘);echo ‘<br>‘;15 //擷取hash中某個key的值16 echo $redis->hget(‘hash‘, ‘cat‘);echo ‘<br>‘;17 18 //擷取hash中所有的keys19 $arr = $redis->hkeys(‘hash‘);20 print_r($arr);echo ‘<br>‘;21 22 //擷取hash中所有的值 順序是隨機的23 $arr = $redis->hvals(‘hash‘);24 print_r($arr);echo ‘<br>‘;25 26 //擷取一個hash中所有的key和value 順序是隨機的27 $arr = $redis->hgetall(‘hash‘);28 print_r($arr);echo ‘<br>‘;29 30 //擷取hash中key的數量31 echo $redis->hlen(‘hash‘);echo ‘<br>‘;32 33 //刪除hash中一個key 如果表不存在或key不存在則返回false34 echo $redis->hdel(‘hash‘, ‘dog‘);echo ‘<br>‘;35 var_dump($redis->hdel(‘hash‘, ‘rabbit‘));echo ‘<br>‘;36 37 // 結果38 // 139 // 040 // 041 // 142 // 143 // 144 // cat145 // Array ( [0] => cat [1] => dog [2] => bird [3] => monkey )46 // Array ( [0] => cat1 [1] => dog [2] => bird [3] => monkey )47 // Array ( [cat] => cat1 [dog] => dog [bird] => bird [monkey] => monkey )48 // 449 // 150 // int(0)
1 <?php 2 //執行個體化redis 3 $redis = new Redis(); 4 //串連 5 $redis->connect(‘127.0.0.1‘, 6379); 6 //字典 7 //大量設定多個key的值 8 $arr = [1=>1, 2=>2, 3=>3, 4=>4, 5=>5]; 9 $redis->hmset(‘hash‘, $arr);10 print_r($redis->hgetall(‘hash‘));echo ‘<br>‘;11 12 // 批量獲得額多個key的值13 $arr = [1, 2, 3, 5];14 $hash = $redis->hmget(‘hash‘, $arr);15 print_r($hash);echo ‘<br>‘;16 17 //檢測hash中某個key知否存在18 echo $redis->hexists(‘hash‘, ‘1‘);echo ‘<br>‘;19 var_dump($redis->hexists(‘hash‘, ‘cat‘));echo ‘<br>‘;20 21 print_r($redis->hgetall(‘hash‘));echo ‘<br>‘;22 23 //給hash表中key增加一個整數值24 $redis->hincrby(‘hash‘, ‘1‘, 1);25 print_r($redis->hgetall(‘hash‘));echo ‘<br>‘;26 27 //給hash中的某個key增加一個浮點值28 $redis->hincrbyfloat(‘hash‘, 2, 1.3);29 print_r($redis->hgetall(‘hash‘));echo ‘<br>‘;30 31 //結果32 // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )33 // Array ( [1] => 1 [2] => 2 [3] => 3 [5] => 5 )34 // 135 // bool(false)36 // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )37 // Array ( [1] => 2 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )38 // Array ( [1] => 2 [2] => 3.3 [3] => 3 [4] => 4 [5] => 5 )
Set(集合):
1 <?php 2 //執行個體化redis 3 $redis = new Redis(); 4 //串連 5 $redis->connect(‘127.0.0.1‘, 6379); 6 //集合 7 // 添加一個元素 8 echo $redis->sadd(‘set‘, ‘cat‘);echo ‘<br>‘; 9 echo $redis->sadd(‘set‘, ‘cat‘);echo ‘<br>‘;10 echo $redis->sadd(‘set‘, ‘dog‘);echo ‘<br>‘;11 echo $redis->sadd(‘set‘, ‘rabbit‘);echo ‘<br>‘;12 echo $redis->sadd(‘set‘, ‘bear‘);echo ‘<br>‘;13 echo $redis->sadd(‘set‘, ‘horse‘);echo ‘<br>‘;14 15 // 查看集合中所有的元素16 $set = $redis->smembers(‘set‘);17 print_r($set);echo ‘<br>‘;18 19 //刪除集合中的value20 echo $redis->srem(‘set‘, ‘cat‘);echo ‘<br>‘;21 var_dump($redis->srem(‘set‘, ‘bird‘));echo ‘<br>‘;22 23 $set = $redis->smembers(‘set‘);24 print_r($set);echo ‘<br>‘;25 26 //判斷元素是否是set的成員27 var_dump($redis->sismember(‘set‘, ‘dog‘));echo ‘<br>‘;28 var_dump($redis->sismember(‘set‘, ‘bird‘));echo ‘<br>‘;29 30 //查看集合中成員的數量31 echo $redis->scard(‘set‘);echo ‘<br>‘;32 33 //移除並返回集合中的一個隨機元素(返回被移除的元素)34 echo $redis->spop(‘set‘);echo ‘<br>‘;35 36 print_r($redis->smembers(‘set‘));echo ‘<br>‘;37 38 // 結果39 // 140 // 041 // 142 // 143 // 144 // 145 // Array ( [0] => rabbit [1] => cat [2] => bear [3] => dog [4] => horse )46 // 147 // int(0)48 // Array ( [0] => dog [1] => rabbit [2] => horse [3] => bear )49 // bool(true)50 // bool(false)51 // 452 // bear53 // Array ( [0] => dog [1] => rabbit [2] => horse )
1 <?php 2 //執行個體化redis 3 $redis = new Redis(); 4 //串連 5 $redis->connect(‘127.0.0.1‘, 6379); 6 //集合 7 $redis->sadd(‘set‘, ‘horse‘); 8 $redis->sadd(‘set‘, ‘cat‘); 9 $redis->sadd(‘set‘, ‘dog‘);10 $redis->sadd(‘set‘, ‘bird‘);11 $redis->sadd(‘set2‘, ‘fish‘);12 $redis->sadd(‘set2‘, ‘dog‘);13 $redis->sadd(‘set2‘, ‘bird‘);14 15 print_r($redis->smembers(‘set‘));echo ‘<br>‘;16 print_r($redis->smembers(‘set2‘));echo ‘<br>‘;17 18 //返回集合的交集19 print_r($redis->sinter(‘set‘, ‘set2‘));echo ‘<br>‘;20 21 //執行交集操作 並結果放到一個集合中22 $redis->sinterstore(‘output‘, ‘set‘, ‘set2‘);23 print_r($redis->smembers(‘output‘));echo ‘<br>‘;24 25 //返回集合的並集26 print_r($redis->sunion(‘set‘, ‘set2‘));echo ‘<br>‘;27 28 //執行並集操作 並結果放到一個集合中29 $redis->sunionstore(‘output‘, ‘set‘, ‘set2‘);30 print_r($redis->smembers(‘output‘));echo ‘<br>‘;31 32 //返回集合的差集33 print_r($redis->sdiff(‘set‘, ‘set2‘));echo ‘<br>‘;34 35 //執行差集操作 並結果放到一個集合中36 $redis->sdiffstore(‘output‘, ‘set‘, ‘set2‘);37 print_r($redis->smembers(‘output‘));echo ‘<br>‘;38 39 // 結果40 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse )41 // Array ( [0] => bird [1] => dog [2] => fish )42 // Array ( [0] => bird [1] => dog )43 // Array ( [0] => dog [1] => bird )44 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )45 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )46 // Array ( [0] => horse [1] => cat )47 // Array ( [0] => horse [1] => cat )
Sorted Set(有序集合):
1 <?php 2 //執行個體化redis 3 $redis = new Redis(); 4 //串連 5 $redis->connect(‘127.0.0.1‘, 6379); 6 //有序集合 7 //添加元素 8 echo $redis->zadd(‘set‘, 1, ‘cat‘);echo ‘<br>‘; 9 echo $redis->zadd(‘set‘, 2, ‘dog‘);echo ‘<br>‘;10 echo $redis->zadd(‘set‘, 3, ‘fish‘);echo ‘<br>‘;11 echo $redis->zadd(‘set‘, 4, ‘dog‘);echo ‘<br>‘;12 echo $redis->zadd(‘set‘, 4, ‘bird‘);echo ‘<br>‘;13 14 //返回集合中的所有元素15 print_r($redis->zrange(‘set‘, 0, -1));echo ‘<br>‘;16 print_r($redis->zrange(‘set‘, 0, -1, true));echo ‘<br>‘;17 18 //返回元素的score值19 echo $redis->zscore(‘set‘, ‘dog‘);echo ‘<br>‘;20 21 //返回儲存的個數22 echo $redis->zcard(‘set‘);echo ‘<br>‘;23 24 //刪除指定成員25 $redis->zrem(‘set‘, ‘cat‘);26 print_r($redis->zrange(‘set‘, 0, -1));echo ‘<br>‘;27 28 //返回集合中介於min和max之間的值的個數29 print_r($redis->zcount(‘set‘, 3, 5));echo ‘<br>‘;30 31 //返回有序集合中score介於min和max之間的值32 print_r($redis->zrangebyscore(‘set‘, 3, 5));echo ‘<br>‘;33 print_r($redis->zrangebyscore(‘set‘, 3, 5, [‘withscores‘=>true]));echo ‘<br>‘;34 35 //返回集合中指定區間內所有的值36 print_r($redis->zrevrange(‘set‘, 1, 2));echo ‘<br>‘;37 print_r($redis->zrevrange(‘set‘, 1, 2, true));echo ‘<br>‘;38 39 40 //有序集合中指定值的socre增加41 echo $redis->zscore(‘set‘, ‘dog‘);echo ‘<br>‘;42 $redis->zincrby(‘set‘, 2, ‘dog‘);43 echo $redis->zscore(‘set‘, ‘dog‘);echo ‘<br>‘;44 45 //移除score值介於min和max之間的元素46 print_r($redis->zrange(‘set‘, 0, -1, true));echo ‘<br>‘;47 print_r($redis->zremrangebyscore(‘set‘, 3, 4));echo ‘<br>‘;48 print_r($redis->zrange(‘set‘, 0, -1, true));echo ‘<br>‘;49 50 //結果51 // 152 // 053 // 054 // 055 // 056 // Array ( [0] => cat [1] => fish [2] => bird [3] => dog )57 // Array ( [cat] => 1 [fish] => 3 [bird] => 4 [dog] => 4 )58 // 459 // 460 // Array ( [0] => fish [1] => bird [2] => dog )61 // 362 // Array ( [0] => fish [1] => bird [2] => dog )63 // Array ( [fish] => 3 [bird] => 4 [dog] => 4 )64 // Array ( [0] => bird [1] => fish )65 // Array ( [bird] => 4 [fish] => 3 )66 // 467 // 668 // Array ( [fish] => 3 [bird] => 4 [dog] => 6 )69 // 270 // Array ( [dog] => 6 )
PHP操作redis