1. 程式人生 > >在redis中優化頻繁操作redis產生多次連結引發的網路延時

在redis中優化頻繁操作redis產生多次連結引發的網路延時

在程式中可能存在頻繁操作redis,每次操作redis都需要產生網路連結,雖然每次操作的返回處理非常快(幾十甚至幾毫米),但是非常多的redis操作在超高的併發請求中,還是有必要優化的,那麼php中如何避免產生多次操作,每次都連結一次redis呢?其實和上篇文章的方法是一樣,僅僅是把 multi 的引數指定為Redis::PIPELINE,但是這樣操作禁止了原子性操作,程式碼如下:

<?php
$redis = new \Redis(); 
$redis->connect('127.0.0.1', 6379);
$key = 'watchkey';

$redis->watch($key);
//僅僅這裡的引數不同
$redis->multi(Redis::PIPELINE);

sleep(3);
$redis->incr($key);
$redis->get($key);

$r = $redis->exec();
var_dump($r);

function getRedis(){
   $redis = new \Redis(); 
   $redis->connect('127.0.0.1', 6379); 
   return $redis;
}

和上次一樣,連著執行3次看看結果:


發現 watchkey 被執行了3次,watch 並沒有起到作用。
這樣的操作僅僅確保程序之間不會產生資料衝突,才能使用這個方法。

相關推薦

redis優化頻繁操作redis產生連結引發網路

在程式中可能存在頻繁操作redis,每次操作redis都需要產生網路連結,雖然每次操作的返回處理非常快(幾十甚至幾毫米),但是非常多的redis操作在超高的併發請求中,還是有必要優化的,那麼php中如何避免產生多次操作,每次都連結一次redis呢?其實和上篇文章的方法是一

Java使用Jedis操作Redis

移除 keys pre java max value con print 處的 轉載:http://www.cnblogs.com/liuling/p/2014-4-19-04.html 使用Java操作Redis需要jedis-2.1.0.jar,下載地址:http://

Redis基本資料結構及SpringBoot使用redisTemplate操作Redis

文章目錄 一、Redis環境 1、環境:CentOS7.0,redis-4.0.2 2、首先啟動redis服務 二、Redis資料結構 1、string(字串) (1)鍵值對 (2)使用

redis常見資料型別操作命令,Java使用Jedis操作Redis

redis常見資料型別操作命令 可參考地址:Http://redisdoc.com/ Java中使用Jedis操作Redis: https://www.cnblogs.com/liuling/p/2014-4-19-04.html redis鍵(key)

Spring使用RedisTemplate操作Redis(spring-data-redis

Redis 資料結構簡介 Redis可以儲存鍵與5種不同資料結構型別之間的對映,這5種資料結構型別分別為String(字串)、List(列表)、Set(集合)、Hash(雜湊)和 Zset(有序集合)。 下面來對這5種資料結構型別作簡單的介紹: 結構型別 結構儲存

Redis的批量操作Pipeline

大多數情況下,我們都會通過請求-相應機制去操作redis。只用這種模式的一般的步驟是,先獲得jedis例項,然後通過jedis的get/put方法與redis互動。由於redis是單執行緒的,下一次請求必須等待上一次請求執行完成後才能繼續執行。然而使用Pipeline模式,客

spring 使用redistemplate 操作redis

Redis 資料結構簡介 Redis可以儲存鍵與5種不同資料結構型別之間的對映,這5種資料結構型別分別為String(字串)、List(列表)、Set(集合)、Hash(雜湊)和 Zset(有序集合)。 下面來對這5種資料結構型別作簡單的介紹: 結構型別 結構

Redis的安裝、使用以及php擴充套件redis並實現php操作redis的一個例子

1、下載原始碼包redis-2.8.21.tar.gz,並將其上傳到指定目錄/urs/src,然後對其進行解壓: [[email protected] src]# tar -xvf redis-2.8.21.tar.gz 進入解壓後的目錄,並執行下面命令,指定安裝

redis的key操作

1set key value  設定key,預設生命週期永久有效 127.0.0.1:6379> set userid 1101 OK 127.0.0.1:6379> set username lihua OK1234 2 get key 127.0.0.1:

redis的流水線操作和事務

流水線(pipeline)redis作為快取使用可以幫助我們提高系統性能,但是redis本身也可以進一步優化,操作redis命令時,通過批量操作命令(例如mget,mset等),但大多數的命令是不支援批量操作的,這時如果一組操作無先後結果上的依賴,可以把這組操作放在流水線裡(

Java使用Jedis操作RedisRedis快速入門

     這裡先說Java中使用Jedis操作Redis,稍後會整理Redis快速入門來詳細介紹Redis(跟著專案走會更容易理解)。 Java連線Redis: 在Java程式中使用Redis之前,我們需要先確保在機器上安裝了Redis服務及Java Redis驅動程式

java使用Jedis操作Redis例項

要想在Java中連線Redis,並進行操作,由兩種方式,一種是spring data redis,它是由spring整合的,不支援叢集,一種是官方推薦的jedis,支援叢集,其他功能差不多一樣, 這裡我們介紹jedis操作例項,以下是使用Jedis的具體步驟: 1、如果是在

Redis】Java使用Jedis操作Redis(Maven導入包)、創建Redis連接池

之前 maven項目 lse 位置 springmvc 替換 () value boolean 如果我們使用Java操作Redis, 需要確保已經安裝了 redis 服務及 Java redis 驅動。 Maven項目可以直接在pom.xml中加入jedis包驅動:

redis 之 使用java操作redis

main print 數據庫 cli 防火墻 images enc png red 1. 在java操作redis需要使用jedis插件,並且linux要開啟相關的防火墻。 重啟防火墻服務 : 2. 新建maven項目: 3.添加項目依賴: <dependenc

Anaconda 安裝redis-py模塊操作redis數據庫

不同 是什麽 文件 sta 過程 span python 相同 如果 今天遇到了一個很神奇的事情 ,在使用python操作redis 數據庫的時候 ,如果使用 pip install redis 安裝的是python 連接 redis的模塊, 但是如果是在anac

Redis學習-5 Jedis操作Redis

lunch sta bsp redis style org 線程池 java應用 獲取 1.Jedis Jedis在java應用中操作Redis; 2.Jedis訪問Redis 下載Jedis http://search.maven.org和Commons-Poolx [關

Windows下安裝Redis及使用Python操作Redis

首先說一下在Windows下安裝Redis,安裝包可以在https://github.com/MSOpenTech/redis/releases中找到,可以下載msi安裝檔案,也可以下載zip的壓縮檔案。 下載zip檔案之後解壓,解壓後是這些檔案: 裡面這個Windows S

【nosql-redis】java直接操作redis

redis入門,百度網盤 連結: https://pan.baidu.com/s/11onVTGqf7uyCGxkoQOxdTw 密碼: csef 1 redis.properties 直接配置在classpath下面 #*****************jedis連線引數

Redis-使用Java程式碼操作Redis

Java訪問redis 2.1 新增依賴 redis.clients jedis 2.9.0 2.2 Java連線redis Jedis jedis = new Jedis(ip, port); jedis.auth(“123456”);//許可權認證 jedis.pi

Redis資料庫安裝, Python操作Redis資料庫

一. 安裝 1.將Redis路徑新增到環境變數. 2.將解壓包放到指定碟符後解壓縮, 開啟一個 cmd 視窗 使用 cd 命令切換到Redis目錄後, 再輸入命令: redis-server.exe redis.windows.conf 如果顯示以下介面即安裝