Redis 入門
一.Redis簡(jiǎn)介
Redis(http://redis.io)是一款開源的、高性能的鍵-值存儲(chǔ)(key-value store)羔杨,它是用ANSI C來編寫靶剑。Redis的項(xiàng)目名是Remote Dictionary Server的縮寫群凶,但它常被稱作是一款數(shù)據(jù)結(jié)構(gòu)服務(wù)器(data structureserver)柠偶。Redis的鍵值可以包括字符串(strings)户秤、哈希(hashes)螺捐、列表(lists)颠悬、集合(sets)和 有序集合(sorted sets)等數(shù)據(jù)類型。 對(duì)于這些數(shù)據(jù)類型定血,你可以執(zhí)行原子操作赔癌。例如:對(duì)字符串進(jìn)行附加操作(append);遞增哈希中的值澜沟;向列表中增加元素灾票;計(jì)算集合的交集、并集與差集等茫虽。
為了獲得優(yōu)異的性能铝条,Redis采用了內(nèi)存中(in-memory)數(shù)據(jù)集(dataset)的方式。根據(jù)使用場(chǎng)景的不同席噩,你可以每隔一段時(shí)間將數(shù)據(jù)集轉(zhuǎn)存到磁盤上來持久化數(shù)據(jù)班缰,或者在日志尾部追加每一條操作命令。
Redis同樣支持主從復(fù)制(master-slave replication)悼枢,并且具有非巢和快速的非阻塞首次同步(non-blockingfirst synchronization)、網(wǎng)絡(luò)斷開自動(dòng)重連等功能馒索。同時(shí)Redis還具有其它一些特性莹妒,其中包括簡(jiǎn)單的check-and-set機(jī)制、pub/sub和配置設(shè)置等绰上,以便使得Redis能夠表現(xiàn)得更像緩存(cache)旨怠。
Redis還提供了豐富的客戶端,以便支持現(xiàn)階段流行的大多數(shù)編程語言蜈块。
二.Redis安裝
Linux下運(yùn)行如下命令進(jìn)行安裝(linux上已經(jīng)安裝好了gcc):
$ wget http://download.redis.io/releases/redis-3.2.6.tar.gz
$ tar xzf redis-3.2.6.tar.gz
$ cd redis-3.2.6
$ make
make完后 redis-3.2.6./src目錄下會(huì)出現(xiàn)編譯后的redis服務(wù)程序redis-server鉴腻,還有用于測(cè)試的客戶端程序redis-cli迷扇。
下面啟動(dòng)redis服務(wù):
$./redis-server
這種方式啟動(dòng)redis 使用的是默認(rèn)配置。也可以通過啟動(dòng)參數(shù)告訴redis使用指定配置文件使用下面命令啟動(dòng):
$./redis-server../redis.conf
在redis-3.2.6目錄下的redis.conf是一個(gè)默認(rèn)的配置文件爽哎。我們可以根據(jù)需要使用自己的配置文件蜓席。
啟動(dòng)redis服務(wù)進(jìn)程后,就可以使用測(cè)試客戶端程序redis-cli和redis服務(wù)交互了:
$ ./redis-cli
redis 127.0.0.1:6379>set foo bar
OK
redis 127.0.0.1:6379>get foo
"bar"
上面演示了get和set命令操作簡(jiǎn)單類型value的例子课锌。foo是key 厨内,bar是個(gè)string類型的value。
停止Redis命令:
./redis-cli-p 6379 shutdown其中6379是redis的端口號(hào)
三.Redis客戶端
Redis的客戶端有很多渺贤,有C雏胃、C++、C#志鞍、Java瞭亮、PHP、Perl述雾、Python街州、Ruby等等,支持現(xiàn)階段流行的大多數(shù)編程語言玻孟,詳情請(qǐng)看redis官網(wǎng):http://redis.io/clients
下面是Java版的Redis客戶端示例:
客戶端jar包地址https://github.com/xetorthio/jedis/downloads
Maven POM中添加:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.6.3</version>
</dependency>
public class JedisDemo {
private Jedis jedis;
@Before
public void init() {
//redis 服務(wù)器地址,端口
jedis = new redis.clients.jedis.Jedis("127.0.0.1", 6379);
}
/**
* String 字符串相關(guān)操作
*/
@Test
public void testString() {
try {
//添加字符串
jedis.set("name", "pub");
System.out.println(jedis.get("name"));
//字符串拼接
jedis.append("name", "info");
System.out.println(jedis.get("name"));
//刪除
jedis.del("name");
System.out.println(jedis.get("name"));
//批量錄入
jedis.mset("name", "pubinfo", "age", "23", "qq", "5201314");
//自增操作 +1
jedis.incr("age");
System.out.println(jedis.get("name") + ",age=" + jedis.get("age"));
} catch (Exception e) {
e.printStackTrace();
} finally {
jedis.disconnect();
}
}
}