Instans Tair (kompatibel dengan Redis OSS) sepenuhnya kompatibel dengan Redis open-source. Anda dapat menghubungkannya menggunakan klien apa pun yang kompatibel dengan Redis, sama seperti saat menghubungkan ke database Redis.
Catatan penggunaan
-
Arsitektur kluster dan pemisahan baca/tulis: Keduanya menyediakan titik akhir node proxy secara default. Hubungkan ke instans ini dengan cara yang sama seperti saat menghubungkan ke instans arsitektur standar.
Saat menghubungkan melalui titik akhir koneksi langsung, gunakan metode yang sama seperti saat menghubungkan ke kluster Redis open-source.
-
Akses tanpa kata sandi: Jika akses tanpa kata sandi melalui VPC diaktifkan, klien dalam VPC yang sama dapat terhubung tanpa kata sandi.
Dapatkan informasi koneksi
Sebelum menulis kode, kumpulkan detail koneksi berikut dari halaman Instances. Pilih wilayah Anda di bilah navigasi atas, klik ID instans, lalu buka bagian Connection Information.
|
Detail
|
Cara mendapatkannya
|
|
Endpoint
|
Lihat endpoint dan port di bagian Connection Information. Gunakan endpoint VPC untuk keamanan yang lebih baik dan latensi lebih rendah. Lihat Lihat endpoint.
|
|
Port
|
Default adalah 6379. Untuk mengubahnya, lihat Ubah endpoint atau port.
|
|
Account
|
Secara default, setiap instans memiliki akun yang dinamai sesuai dengan ID instans (misalnya, r-bp10noxlhcoim2****). Untuk membuat akun tambahan, lihat Buat dan kelola akun.
|
|
Password
|
Formatnya bergantung pada jenis akun: akun default — masukkan kata sandi secara langsung; akun kustom — gunakan format <username>:<password> (misalnya, testaccount:Rp829dlwa).
|
Saat menggunakan alat pihak ketiga seperti Remote Desktop Manager (RDM), masukkan kata sandi dalam format username:password. Untuk mengatur ulang kata sandi yang lupa, lihat Ubah atau atur ulang kata sandi.
Pilih klien
Pilih klien sesuai bahasa pemrograman Anda. Semua contoh pada bagian berikutnya terhubung ke instans Tair yang sama.
|
Bahasa
|
Klien
|
Gaya API
|
Catatan
|
|
Java
|
Jedis
|
Sinkron
|
Pooling koneksi melalui JedisPool
|
|
Java
|
Lettuce
|
Async dan reaktif
|
Gunakan versi 6.3.0.RELEASE atau yang lebih baru
|
|
Java
|
Spring Data Redis
|
Sinkron atau async
|
Mendukung backend Jedis dan Lettuce
|
|
Python
|
redis-py
|
Sinkron
|
Klien Python resmi
|
|
Node.js
|
node-redis
|
Async
|
Klien Node.js resmi
|
|
Go
|
go-redis
|
Sinkron
|
Klien Go yang banyak digunakan
|
|
PHP
|
PhpRedis
|
Sinkron
|
Ekstensi C untuk PHP
|
|
C / C++
|
hiredis
|
Sinkron
|
Klien C minimalis
|
|
.NET
|
StackExchange.Redis
|
Sinkron
|
Gunakan versi 2.7.20 atau yang lebih baru
|
Untuk daftar lengkap klien yang didukung, lihat Redis Clients.
Penting
Jangan gunakan klien ServiceStack Redis atau CSRedis. Masalah pada ServiceStack Redis memerlukan pembelian dukungan langsung dari ServiceStack, dan dukungan CSRedis telah dihentikan.
Hubungkan dan uji
Contoh berikut menunjukkan kode minimum yang diperlukan untuk terhubung dan menjalankan perintah SET/GET. Ganti semua nilai placeholder dengan detail koneksi aktual Anda.
Jedis
Contoh ini menggunakan Jedis 4.3.0.
Contoh ini menggunakan Maven. Anda juga dapat mengunduh file JAR Jedis secara langsung.
-
Tambahkan dependensi ke pom.xml:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.0</version>
</dependency>
-
Hubungkan dan jalankan perintah:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisExample {
public static void main(String[] args) {
JedisPoolConfig config = new JedisPoolConfig();
// Maksimum koneksi idle — tidak boleh melebihi batas koneksi instans
config.setMaxIdle(200);
// Maksimum total koneksi — tidak boleh melebihi batas koneksi instans
config.setMaxTotal(300);
config.setTestOnBorrow(false);
config.setTestOnReturn(false);
// Ganti dengan endpoint dan kata sandi instans Anda
String host = "r-bp1s1bt2tlq3p1****pd.redis.rds.aliyuncs.com";
// Akun default: masukkan kata sandi secara langsung
// Akun kustom: gunakan format "username:password"
String password = "r-bp1s1bt2tlq3p1****:Database123";
JedisPool pool = new JedisPool(config, host, 6379, 3000, password);
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.set("foo10", "bar");
System.out.println(jedis.get("foo10"));
jedis.zadd("sose", 0, "car");
jedis.zadd("sose", 0, "bike");
System.out.println(jedis.zrange("sose", 0, -1));
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
// Panggil ini saat mematikan aplikasi Anda untuk melepas sumber daya
pool.destroy();
}
}
-
Output yang diharapkan:
bar
[bike, car]
Penting
Untuk error Jedis yang disebabkan oleh parameter tidak valid atau penggunaan fitur yang tidak tepat, lihat Error umum.
Lettuce
Contoh ini menggunakan Lettuce 6.3.0.RELEASE.
Penting
Gunakan Lettuce 6.3.0.RELEASE atau yang lebih baru dan atur parameter TCP_USER_TIMEOUT. Ini mencegah masalah blackhole filtering pada klien Lettuce.
Contoh ini menggunakan Maven. Anda juga dapat mengunduh file JAR Lettuce secara langsung.
-
Tambahkan dependensi berikut ke pom.xml:
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<version>4.1.100.Final</version>
<classifier>linux-x86_64</classifier>
</dependency>
</dependencies>
-
Hubungkan dan jalankan perintah:
import io.lettuce.core.ClientOptions;
import io.lettuce.core.RedisClient;
import io.lettuce.core.RedisURI;
import io.lettuce.core.SocketOptions;
import io.lettuce.core.SocketOptions.KeepAliveOptions;
import io.lettuce.core.SocketOptions.TcpUserTimeoutOptions;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.sync.RedisCommands;
import java.time.Duration;
public class LettuceExample {
/**
* Aktifkan TCP keepalive dengan pengaturan berikut:
* TCP_KEEPIDLE = 30 detik
* TCP_KEEPINTVL = 10 detik
* TCP_KEEPCNT = 3
*/
private static final int TCP_KEEPALIVE_IDLE = 30;
/**
* TCP_USER_TIMEOUT mencegah Lettuce terjebak dalam loop timeout
* saat terjadi kegagalan atau crash. Lihat: https://github.com/lettuce-io/lettuce-core/issues/2082
*/
private static final int TCP_USER_TIMEOUT = 30;
private static RedisClient client = null;
private static StatefulRedisConnection<String, String> connection = null;
public static void main(String[] args) {
// Ganti dengan informasi instans aktual Anda
String host = "r-bp1s1bt2tlq3p1****.redis.rds.aliyuncs.com";
String user = "r-bp1s1bt2tlq3p1****";
String password = "Da****3";
int port = 6379;
// Bangun RedisURI
RedisURI uri = RedisURI.Builder
.redis(host, port)
.withAuthentication(user, password)
.build();
// Konfigurasikan TCP keepalive dan TCP_USER_TIMEOUT
SocketOptions socketOptions = SocketOptions.builder()
.keepAlive(KeepAliveOptions.builder()
.enable()
.idle(Duration.ofSeconds(TCP_KEEPALIVE_IDLE))
.interval(Duration.ofSeconds(TCP_KEEPALIVE_IDLE / 3))
.count(3)
.build())
.tcpUserTimeout(TcpUserTimeoutOptions.builder()
.enable()
.tcpUserTimeout(Duration.ofSeconds(TCP_USER_TIMEOUT))
.build())
.build();
client = RedisClient.create(uri);
client.setOptions(ClientOptions.builder()
.socketOptions(socketOptions)
.build());
connection = client.connect();
RedisCommands<String, String> commands = connection.sync();
System.out.println(commands.set("foo", "bar"));
System.out.println(commands.get("foo"));
// Matikan — tutup koneksi dan lepaskan sumber daya
connection.close();
client.shutdown();
}
}
-
Output yang diharapkan:
OK
bar
Spring Data Redis
Contoh ini menggunakan Spring Data Redis 2.4.2.
Penting
Gunakan Lettuce versi 6.3.0.RELEASE atau yang lebih baru dan atur TCP_USER_TIMEOUT untuk mencegah masalah blackhole filtering.
Contoh ini menggunakan Maven dengan Lettuce atau Jedis sebagai backend koneksi.
-
Tambahkan berikut ke pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath/>
</parent>
<groupId>com.aliyun.tair</groupId>
<artifactId>spring-boot-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-example</name>
<description>Proyek demo untuk Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<version>4.1.100.Final</version>
<classifier>linux-x86_64</classifier>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
-
Konfigurasikan factory koneksi. Pilih Jedis atau Lettuce: Spring Data Redis dengan Jedis:
@Bean
JedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration("host", port);
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// Maksimum total koneksi — tidak boleh melebihi batas koneksi instans
jedisPoolConfig.setMaxTotal(30);
// Maksimum koneksi idle — tidak boleh melebihi batas koneksi instans
jedisPoolConfig.setMaxIdle(20);
// Nonaktifkan testOn[Borrow|Return] untuk menghindari perintah PING tambahan
jedisPoolConfig.setTestOnBorrow(false);
jedisPoolConfig.setTestOnReturn(false);
JedisClientConfiguration jedisClientConfiguration = JedisClientConfiguration.builder()
.usePooling()
.poolConfig(jedisPoolConfig)
.build();
return new JedisConnectionFactory(config, jedisClientConfiguration);
}
Spring Data Redis dengan Lettuce (termasuk TCP_USER_TIMEOUT):
@Configuration
public class BeanConfig {
/**
* Aktifkan TCP keepalive dengan pengaturan berikut:
* TCP_KEEPIDLE = 30 detik
* TCP_KEEPINTVL = 10 detik
* TCP_KEEPCNT = 3
*/
private static final int TCP_KEEPALIVE_IDLE = 30;
/**
* TCP_USER_TIMEOUT mencegah Lettuce terjebak dalam loop timeout
* saat terjadi kegagalan atau crash. Lihat: https://github.com/lettuce-io/lettuce-core/issues/2082
*/
private static final int TCP_USER_TIMEOUT = 30;
@Bean
LettuceConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
config.setHostName("r-bp1y4is8svonly****pd.redis.rds.aliyuncs.com");
config.setPort(6379);
config.setUsername("r-bp1y4is8svonly****");
config.setPassword("Da****3");
SocketOptions socketOptions = SocketOptions.builder()
.keepAlive(KeepAliveOptions.builder()
.enable()
.idle(Duration.ofSeconds(TCP_KEEPALIVE_IDLE))
.interval(Duration.ofSeconds(TCP_KEEPALIVE_IDLE / 3))
.count(3)
.build())
.tcpUserTimeout(TcpUserTimeoutOptions.builder()
.enable()
.tcpUserTimeout(Duration.ofSeconds(TCP_USER_TIMEOUT))
.build())
.build();
LettuceClientConfiguration lettuceClientConfiguration = LettuceClientConfiguration.builder()
.clientOptions(ClientOptions.builder().socketOptions(socketOptions).build())
.build();
return new LettuceConnectionFactory(config, lettuceClientConfiguration);
}
@Bean
RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
return template;
}
}
-
Jalankan kode tersebut.
redis-py
Contoh ini menggunakan Python 3.9 dan redis-py 4.4.1.
-
Unduh dan instal klien redis-py.
-
Hubungkan dan jalankan perintah:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import redis
# Ganti dengan endpoint dan port instans Anda
host = 'r-bp10noxlhcoim2****.redis.rds.aliyuncs.com'
port = 6379
# Akun default: masukkan kata sandi secara langsung
# Akun kustom: gunakan format "username:password"
pwd = 'testaccount:Rp829dlwa'
r = redis.Redis(host=host, port=port, password=pwd)
r.set('foo', 'bar')
print(r.get('foo'))
-
Jalankan skrip tersebut.
node-redis
Contoh ini menggunakan Node.js 19.4.0 dan node-redis 4.5.1.
-
Unduh dan instal node-redis.
-
Hubungkan dan jalankan perintah:
import { createClient } from 'redis';
// Ganti dengan endpoint, port, akun, dan kata sandi instans Anda
const host = 'r-bp10noxlhcoim2****.redis.rds.aliyuncs.com';
const port = 6379;
const username = 'testaccount';
// Jika kata sandi mengandung karakter khusus (!@#$%^&*()+-=_), encode terlebih dahulu:
// password = encodeURIComponent(password)
const password = 'Rp829dlwa';
const client = createClient({
// redis://[[username]:[password]@[host][:port]/[db-number]
url: `redis://${username}:${password}@${host}:${port}/0`
});
client.on('error', (err) => console.log('Redis Client Error', err));
await client.connect();
await client.set('foo', 'bar');
const value = await client.get('foo');
console.log("get foo: %s", value);
await client.disconnect();
-
Jalankan skrip tersebut.
Jika Anda melihat SyntaxError: Cannot use import statement outside a module, ubah nama file dari .js menjadi .mjs dan jalankan dengan node --experimental-modules redis.mjs.
go-redis
Contoh ini menggunakan Go 1.21 dan go-redis v9.18.0. Untuk lingkungan produksi, sangat penting untuk menyesuaikan pengaturan kolam koneksi (PoolSize, MinIdleConns) agar sesuai dengan kebutuhan konkurensi aplikasi Anda dan batas koneksi instans Redis Anda.
-
Unduh dan instal klien go-redis.
-
Hubungkan dan jalankan perintah:
package main
import (
"context"
"fmt"
"time"
"github.com/redis/go-redis/v9"
)
var ctx = context.Background()
func ExampleClient() {
client := redis.NewClient(&redis.Options{
// Ganti dengan endpoint dan port instans Anda.
Addr: "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com:6379",
// Ganti dengan kata sandi instans Anda.
Password: "testaccount:Rp829dlwa",
DB: 0, // Gunakan DB default.
// Pengaturan kolam koneksi. Sesuaikan ini untuk workload Anda, dan jangan melebihi batas koneksi maksimum instans.
PoolSize: 20, // Jumlah maksimum koneksi. Nilai yang disarankan: QPS puncak / QPS per koneksi, atau sekitar 10 x jumlah core CPU.
MinIdleConns: 5, // Jumlah minimum koneksi idle. Memanaskan kolam sebelumnya untuk menyerap lonjakan traffic tanpa dial baru.
PoolTimeout: 4 * time.Second, // Waktu tunggu saat meminjam koneksi dari kolam. Atur sedikit lebih besar dari ReadTimeout.
ConnMaxIdleTime: 5 * time.Minute, // Waktu penutupan koneksi idle. Harus kurang dari idle timeout instans (default 600 detik).
// Pengaturan jaringan dan retry.
DialTimeout: 5 * time.Second, // Timeout untuk membangun koneksi TCP.
ReadTimeout: 3 * time.Second, // Timeout baca. -1 menonaktifkan timeout, 0 menggunakan default.
WriteTimeout: 3 * time.Second, // Timeout tulis.
MaxRetries: 3, // Jumlah retry perintah saat gagal. -1 menonaktifkan retry.
})
defer client.Close()
// Kode berikut menunjukkan contoh SET/GET.
if err := client.Set(ctx, "foo", "bar", 0).Err(); err != nil {
panic(err)
}
val, err := client.Get(ctx, "foo").Result()
if err != nil {
panic(err)
}
fmt.Println("set : foo -> ", val)
}
func main() {
ExampleClient()
}
-
Jalankan kode tersebut.
PhpRedis
Contoh ini menggunakan PHP 8.2.1 dan PhpRedis 5.3.7.
-
Unduh dan instal klien PhpRedis.
-
Hubungkan dan jalankan perintah:
<?php
// Ganti dengan endpoint dan port instans Anda
$host = "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com";
$port = 6379;
// Ganti dengan akun dan kata sandi Anda
$user = "testaccount";
$pwd = "Rp829dlwa";
$redis = new Redis();
if ($redis->connect($host, $port) == false) {
die($redis->getLastError());
}
if ($redis->auth([$user, $pwd]) == false) {
die($redis->getLastError());
}
if ($redis->set("foo", "bar") == false) {
die($redis->getLastError());
}
$value = $redis->get("foo");
echo $value;
?>
-
Jalankan skrip tersebut.
Error umum:
Cannot assign requested address: Lihat Error "Cannot assign requested address".
redis protocol error, got ' ' as reply type byte: Tingkatkan klien PhpRedis Anda. Lihat phpredis/phpredis#1585.
C atau C++
Contoh ini menggunakan hiredis 1.1.0.
-
Unduh dan instal hiredis.
-
Tulis kode berikut:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <hiredis.h>
int main(int argc, char **argv) {
unsigned int j;
redisContext *c;
redisReply *reply;
if (argc < 4) {
printf("Usage: example r-bp10noxlhcoim2****.redis.rds.aliyuncs.com 6379 instance_id password\n");
exit(0);
}
const char *hostname = argv[1];
const int port = atoi(argv[2]);
const char *instance_id = argv[3];
const char *password = argv[4];
struct timeval timeout = { 1, 500000 }; // 1.5 detik
c = redisConnectWithTimeout(hostname, port, timeout);
if (c == NULL || c->err) {
if (c) {
printf("Connection error: %s\n", c->errstr);
redisFree(c);
} else {
printf("Connection error: can't allocate redis context\n");
}
exit(1);
}
/* AUTH */
reply = redisCommand(c, "AUTH %s", password);
printf("AUTH: %s\n", reply->str);
freeReplyObject(reply);
/* PING */
reply = redisCommand(c, "PING");
printf("PING: %s\n", reply->str);
freeReplyObject(reply);
/* SET and GET */
reply = redisCommand(c, "SET %s %s", "foo", "hello world");
printf("SET: %s\n", reply->str);
freeReplyObject(reply);
reply = redisCommand(c, "SET %b %b", "bar", (size_t) 3, "hello", (size_t) 5);
printf("SET (binary API): %s\n", reply->str);
freeReplyObject(reply);
reply = redisCommand(c, "GET foo");
printf("GET foo: %s\n", reply->str);
freeReplyObject(reply);
/* INCR */
reply = redisCommand(c, "INCR counter");
printf("INCR counter: %lld\n", reply->integer);
freeReplyObject(reply);
reply = redisCommand(c, "INCR counter");
printf("INCR counter: %lld\n", reply->integer);
freeReplyObject(reply);
/* Operasi list */
reply = redisCommand(c, "DEL mylist");
freeReplyObject(reply);
for (j = 0; j < 10; j++) {
char buf[64];
snprintf(buf, 64, "%d", j);
reply = redisCommand(c, "LPUSH mylist element-%s", buf);
freeReplyObject(reply);
}
reply = redisCommand(c, "LRANGE mylist 0 -1");
if (reply->type == REDIS_REPLY_ARRAY) {
for (j = 0; j < reply->elements; j++) {
printf("%u) %s\n", j, reply->element[j]->str);
}
}
freeReplyObject(reply);
/* Putuskan koneksi dan bebaskan konteks */
redisFree(c);
return 0;
}
-
Kompilasi:
gcc -o example -g example.c -I /usr/local/include/hiredis -lhiredis
-
Jalankan:
./example r-bp10noxlhcoim2****.redis.rds.aliyuncs.com 6379 r-bp10noxlhcoim2**** password
.NET (StackExchange.Redis)
Contoh ini menggunakan StackExchange.Redis 2.7.20.
-
Unduh dan instal StackExchange.Redis.
-
Siapkan singleton ConnectionMultiplexer:
ConfigurationOptions harus dikonfigurasi sebagai singleton dan dibagikan di seluruh aplikasi Anda. Untuk semua parameter yang tersedia, lihat ConfigurationOptions. Objek IDatabase yang dikembalikan oleh GetDatabase() bersifat ringan — buat setiap kali digunakan dari ConnectionMultiplexer: ``csharp redisConn = GetRedisConn(); var db = redisConn.GetDatabase(); ``
using StackExchange.Redis;
// Atur endpoint, port, dan kata sandi
private static ConfigurationOptions configurationOptions = ConfigurationOptions.Parse(
"r-bp10noxlhcoim2****.redis.rds.aliyuncs.com:6379,password=testaccount:Rp829dlwa,connectTimeout=2000"
);
private static readonly object Locker = new object();
private static ConnectionMultiplexer redisConn;
public static ConnectionMultiplexer GetRedisConn()
{
if (redisConn == null)
{
lock (Locker)
{
if (redisConn == null || !redisConn.IsConnected)
{
redisConn = ConnectionMultiplexer.Connect(configurationOptions);
}
}
}
return redisConn;
}
-
Jalankan perintah pada tipe data umum: String:
String
// SET dan GETstring strKey = "hello";string strValue = "world";bool setResult = db.StringSet(strKey, strValue);Console.WriteLine("set " + strKey + " " + strValue + ", result is " + setResult);// INCRstring counterKey = "counter";long counterValue = db.StringIncrement(counterKey);Console.WriteLine("incr " + counterKey + ", result is " + counterValue);// EXPIREdb.KeyExpire(strKey, new TimeSpan(0, 0, 5));Thread.Sleep(5 * 1000);Console.WriteLine("expire " + strKey + ", after 5 seconds, value is " + db.StringGet(strKey));// MSET dan MGETKeyValuePair<RedisKey, RedisValue> kv1 = new KeyValuePair<RedisKey, RedisValue>("key1", "value1");KeyValuePair<RedisKey, RedisValue> kv2 = new KeyValuePair<RedisKey, RedisValue>("key2", "value2");db.StringSet(new KeyValuePair<RedisKey, RedisValue>[] { kv1, kv2 });RedisValue[] values = db.StringGet(new RedisKey[] { kv1.Key, kv2.Key });Console.WriteLine("mget " + kv1.Key + " " + kv2.Key + ", result is " + values[0] + "&&" + values[1]);
Hash
string hashKey = "myhash";db.HashSet(hashKey, "f1", "v1");db.HashSet(hashKey, "f2", "v2");HashEntry[] values = db.HashGetAll(hashKey);Console.Write("hgetall " + hashKey + ", result is");for (int i = 0; i < values.Length; i++){ HashEntry hashEntry = values[i]; Console.Write(" " + hashEntry.Name + " " + hashEntry.Value);}Console.WriteLine();
List
string listKey = "myList";db.ListRightPush(listKey, "a");db.ListRightPush(listKey, "b");db.ListRightPush(listKey, "c");RedisValue[] values = db.ListRange(listKey, 0, -1);Console.Write("lrange " + listKey + " 0 -1, result is ");for (int i = 0; i < values.Length; i++){ Console.Write(values[i] + " ");}Console.WriteLine();
Set
string setKey = "mySet";db.SetAdd(setKey, "a");db.SetAdd(setKey, "b");db.SetAdd(setKey, "c");bool isContains = db.SetContains(setKey, "a");Console.WriteLine("set " + setKey + " contains a is " + isContains);
Sorted Set
string sortedSetKey = "myZset";db.SortedSetAdd(sortedSetKey, "xiaoming", 85);db.SortedSetAdd(sortedSetKey, "xiaohong", 100);db.SortedSetAdd(sortedSetKey, "xiaofei", 62);db.SortedSetAdd(sortedSetKey, "xiaotang", 73);RedisValue[] names = db.SortedSetRangeByRank(sortedSetKey, 0, 2, Order.Ascending);Console.Write("zrevrangebyscore " + sortedSetKey + " 0 2, result is ");for (int i = 0; i < names.Length; i++){ Console.Write(names[i] + " ");}Console.WriteLine();