日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

20分钟快速了解Redis

發布時間:2023/12/18 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20分钟快速了解Redis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis可以說是目前最火爆的NoSQL數據庫!

?

過去幾年,Memcached很盛行,現在有很多公司已將Memcached替換成了Redis。當然,很多人替換并不清楚為什么,只是感覺不想讓主流拋棄,這也充分反映了目前Redis的強勢。

?

Redis是基于內存的數據結構存儲開源系統,采用C語言編寫,運行效率極高。可作為內存數據庫、緩存或消息代理中間件,前兩種情況實際當中使用更多些。

?

Redis與Memcached一樣,以<key,value>二元鍵值對的形式存儲數據,但與Memcached最大的不同在于Redis支持更多的數據類型,包括String、Hash、List、Set、Sorted Set等。

?

Redis目前發展很快,當前版本是3,其官方網址是:http://redis.io/ 源碼地址:https://github.com/antirez/redis

?

由于采用ANSI C編寫,Redis官方支持POSIX類型系統如linux等,Windows環境下有第三方的移植程序,但一般只做開發調試用,真正部署還是運行在linux系統上,才能發揮其威力。

?

Redis的安裝部署R

?

下面我們就在CentOS 6上進行安裝部署,具體步驟如下:

?

1.wget http://download.redis.io/releases/redis-3.0.5.tar.gz

這是當前的最新版本,可以到官網下載頁面查看最新版本或安裝以前的版本。

?

2.tar xzf redis-3.0.5.tar.gz 解壓后,cd redis-3.0.5 到Redis主目錄

?

3.make 編譯,注意可能會出現機器上缺少依賴包的提示,按提示安裝依賴包,直到make成功。

?

4.make test 運行測試,一路顯示ok通過(需要安裝TCL依賴包,見提示)。

?

?

這時在src目錄下會多出幾個可執行程序,其中redis-server是服務主程序。我們運行redis-server --help看看有哪些參數:

?

?

5. ./src/redis-server & 后臺啟動Redis,會顯示成功畫面,但會有三個警告提示。redis的提示很詳細,我們照著做修改即可。

?

echo 511 > /proc/sys/net/core/somaxconn

vim /etc/sysctl.conf 加入vm.overcommit_memory = 1

vim /etc/rc.local 加入 echo never > /sys/kernel/mm/transparent_hugepage/enabled

?

后兩個重啟生效。再次運行redis-server命令,只存在一個沒有指定config文件使用缺省配置的警告。啟動畫面如下:

?

?

我們看到,服務已啟動,監聽的端口號是6379

?

6. ./src/redis-cli 運行提供的客戶端程序,體驗下簡單操作命令。

?

?

redis所有支持命令在 http://redis.io/commands 上可以查到。

?

7. ./redis-cli shutdown 關閉redis服務。

?

8. make install 將redis命令安裝到bin目錄下,成為系統命令。

?

Redis配置參數

?

前面我們啟動redis,沒有指定配置文件,一般情況下,我們需要指定配置文件啟動。在redis主目錄下,有個redis.conf配置文件模板。cp redis.conf /etc 復制到etc目錄下。

?

redis.conf文件里的配置參數有詳細的解釋說明,下面是幾個常用參數:

?

daemonize 缺省是no, 一般使用改為yes,這樣啟動redis-server時自動是后臺運行方式。

?

port 6379 指定端口號,可以調整自己需要的端口值。

?

tcp-backlog 511 這個值就是前面需要調整somaxconn值的原因,它涉及到TCP連接時accept queue隊列的大小,是取它們的最小值。這個參數和redis高并發處理請求密切相關,根據實際運行情況調整。

?

bind 只接受來自某IP的請求,安全考慮,缺省不限制。

?

tcp-keepalive 60 主動檢測客戶端連接是否正常,官方建議是60s

?

loglevel notice 定義日志級別

logfile "" 定義日志文件位置

?

save 900 1 存儲數據到硬盤策略,這條定義的是900s內如有1個key值發生變化,就執行save存數據快照到硬盤操作。

?

dbfilename dump.rdb 指定數據快照文件名

dir ./ 指定數據快照文件目錄

?

調整好參數后,我們用redis-server /etc/redis.conf 命令啟動即可。

?

Java程序訪問Redis

?

Redis支持的客戶端操作語言非常豐富,達到40多種。就Java來說,也有很多訪問驅動實現,我們最常用的還是Jedis。

?

Jedis源碼地址: https://github.com/xetorthio/jedis 活躍度很高,能夠跟上Redis服務端發布的最新功能,而且使用簡單,基本和Redis命令行語法相似。

?

下面我們就在spring工程下簡單使用下Jedis:

?

1. pom.xml 中配置Jedis和單元測試jar包。

?

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.7.2</version>

</dependency>

?

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.10</version>

<scope>test</scope>

</dependency>

?

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>${spring.version}</version>

<scope>test</scope>

</dependency>

?

2. spring配置xml文件配置Jedis連接服務器相關參數。

?

<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">

<property name="maxTotal" value="4096"/>

<property name="maxIdle" value="200"/>

<property name="maxWaitMillis" value="3000"/>

<property name="testOnBorrow" value="true" />

<property name="testOnReturn" value="true" />

</bean>

?

<bean id="jedisPool" class="redis.clients.jedis.JedisPool">

<constructor-arg index="0" ref="poolConfig"/>

<constructor-arg index="1" value="127.0.0.1"/>

<constructor-arg index="2" value="6379" type="int"/>

</bean>

?

3. 編寫測試代碼:

?

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = "classpath:spring-test.xml")

public class RedisTest extends AbstractJUnit4SpringContextTests {

?

@Autowired

private JedisPool jedisPool;

?

@Test

public void basicOpTest(){

?

Jedis jedis = jedisPool.getResource();

?

jedis.set("person.001.name", "frank");

jedis.set("person.001.city", "beijing");

?

String name = jedis.get("person.001.name");

String city = jedis.get("person.001.city");

?

assertEquals("frank",name);

assertEquals("beijing",city);

?

jedis.del("person.001.name");

Boolean result = jedis.exists("person.001.name");

assertEquals(false,result);

?

result = jedis.exists("person.001.city");

assertEquals(true,result);

?

jedis.close();

}

}

?

eclipse下JUnit Test運行單元測試通過!

?

?

讀完本篇,你應該了解如下內容:

1.Redis是基于內存的數據存儲系統,數據以<key,value>形式存儲。value支持多種數據類型,包括String、Hash、List、Set、Sorted Set等。

?

2.Redis采用C語言開發,安裝運行在linux等POSIX系統上,windows系統上有第三方移植,可做開發測試。

?

3.Java常用的Redis客戶端編程驅動是Jedis。

?

本文摘自微信號:Java架構師

?

轉載于:https://www.cnblogs.com/jelynn/p/5192236.html

總結

以上是生活随笔為你收集整理的20分钟快速了解Redis的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。