云服务器内容精选

  • 使用连接池方式连接实例的Java代码示例 package nosql.cloud.huawei.jedis; import redis.clients.jedis.*; public class MainBitMao { public static void main(String[] args) { // 初始化Jedis资源池配置 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 设置资源池中的最大连接数 jedisPoolConfig.setMaxTotal(10); // 设置资源池允许的最大空闲连接数 jedisPoolConfig.setMaxIdle(10); // 设置资源池确保的最少空闲连接数 jedisPoolConfig.setMinIdle(2); // 根据配置初始化Jedis资源池 // note: 若版本不支持user ACL机制, user必须为null JedisPool jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 8635, null, "********"); // 从资源池里获取连接 try (Jedis jedis = jedisPool.getResource()){ // 初始化key value String key = "test_key", value = "test_value"; // do something... // set存储(key, value)对 jedis.set(key, value); // get获取key对应的value值 jedis.get(key); // do something... } // 关闭资源池 jedisPool.close(); } }
  • 使用ClusterServer模式连接实例 样例代码: import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; public class ClusterServerTests { private static void testClusterServer() { Config config = new Config(); config.useClusterServers() .addNodeAddress("172.xx.xx.xx:8635").setPassword(password); RedissonClient redisson = Redisson.create(config); execute(redisson); // send requests to database redisson.shutdown(); } public static void main(String[] args) { testClusterServer(); } } 上述代码中“172.xx.xx.xx”为待连接GeminiDB Redis实例的负载均衡地址。 您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。 图3 查看负载均衡地址 上述代码中的“8635”为待连接GeminiDB Redis实例的端口,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。 GeminiDB Redis支持与限制的命令,详情请参见开发运维规范。 由于GeminiDB Redis和开源Redis集群计算hash算法不同,因此GeminiDB Redis的部分命令需要给对应的key打上hash tag,否则会出现非预期的行为。hash tag使用建议参考开发运维规范。
  • 使用SingleServer模式连接实例 样例代码: import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; public class SingleServerTests { private static void testSingleServer() { Config config = new Config(); // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全; // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。 String password = System.getenv("EXAMPLE_PASSWORD_ENV"); config.useSingleServer().setAddress("redis://172.xx.xx.xx:8635") .setPassword(password); RedissonClient redisson = Redisson.create(config); execute(redisson); // send requests to database redisson.shutdown(); } public static void main(String[] args) { testSingleServer(); } }
  • 使用Sentinel模式连接实例 样例代码: import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import static org.redisson.config.ReadMode.MASTER; public class SingleServerTests { public static void testSentinel() { Config config = new Config(); // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全; // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。 String password = System.getenv("EXAMPLE_PASSWORD_ENV"); config.useSentinelServers() .setMasterName(master_name) .setCheckSentinelsList(false) .setReadMode(MASTER) .setPassword(password) .addSentinelAddress("redis://172.xx.xx.xx:8635"); RedissonClient redisson = Redisson.create(config); execute(redisson); // send requests to database redisson.shutdown(); } public static void main(String[] args) { testSentinel(); } } 上述代码中“172.xx.xx.xx”为待连接GeminiDB Redis实例的负载均衡地址。 您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。 图2 查看负载均衡地址 上述代码中的“8635”为待连接GeminiDB Redis实例的端口,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。 GeminiDB Redis只是实现了Sentinel模式的接入方式,不采用原生sentinel的可用性功能。所以样例代码中,master_name固定为“mymaster”,必须设置“CheckSentinelsList”为fasle,必须设置ReadMode为MASTER。 GeminiDB Redis支持与限制的命令,详情请参见开发运维规范。 由于GeminiDB Redis和开源Redis集群计算hash算法不同,因此GeminiDB Redis的部分命令需要给对应的key打上hash tag,否则会出现非预期的行为。hash tag使用建议参考开发运维规范。
  • 操作步骤 获取GeminiDB Redis实例的负载均衡地址和端口信息。 负载均衡地址的查看方法请参见查看负载均衡地址及端口。 端口信息的获取方法请参见查看实例节点端口。 登录弹性云服务器,具体操作请参见《弹性云服务器快速入门》中“登录弹性云服务器”。 使用Golang客户端连接GeminiDB Redis实例,本文以使用go-redis SDK为例。 go-redis的下载地址为:https://github.com/go-redis/redis。 使用单机方式连接GeminiDB Redis集群 package main import ( "fmt" "github.com/go-redis/redis" "os" ) func main() { // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全; // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。 password = os.Getenv("EXAMPLE_PASSWORD_ENV") client := redis.NewClient(&redis.Options{ Addr: "xx.xx.xx.xx:8635", //步骤1获取到的负载均衡地址 Password: password, DB: 0, // 使用默认的0号数据库 }) pong, err := client.Ping().Result() fmt.Println(pong, err) err = client.Set("key1", "value1", 0).Err() if err != nil { panic(err) } val, err := client.Get("key1").Result() if err != nil { panic(err) } fmt.Println("key1", val) } 预期输出为: PONG key1 value1 使用go-redis连接GeminiDB Redis时,需要使用普通模式,不能使用集群模式,如上示例代码所示。 上述实例代码中的GeminiDB Redis地址和密码,请根据实际情况填写。 使用集群方式连接GeminiDB Redis集群 package main import ( "fmt" "github.com/go-redis/redis" ) func main() { client := redis.NewClusterClient(&redis.ClusterOptions{ Addrs: []string{ // 步骤1获取到的负载均衡地址 " xx.xx.xx.xx:8635", }, Password: "xx", // 密码 }) pong, err := client.Ping().Result() fmt.Println(pong, err) err = client.Set("key1", "value1", 0).Err() if err != nil { panic(err) } val, err := client.Get("key1").Result() if err != nil { panic(err) } fmt.Println("key1", val) }
  • 使用SingleServer模式连接实例 样例代码: import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; public class SingleServerTests { private static void testSingleServer() { Config config = new Config(); config.useSingleServer().setAddress("redis://172.xx.xx.xx:8635") .setPassword(password); RedissonClient redisson = Redisson.create(config); execute(redisson); // send requests to database redisson.shutdown(); } public static void main(String[] args) { testSingleServer(); } }
  • 使用ClusterServer模式连接实例 样例代码: import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; public class ClusterServerTests { private static void testClusterServer() { Config config = new Config(); config.useClusterServers() .addNodeAddress("172.xx.xx.xx:8635").setPassword(password); RedissonClient redisson = Redisson.create(config); execute(redisson); // send requests to database redisson.shutdown(); } public static void main(String[] args) { testClusterServer(); } } 上述代码中“172.xx.xx.xx”为待连接GaussDB(for Redis)实例的负载均衡地址。 您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。 图3 查看负载均衡地址 上述代码中的“8635”为待连接GaussDB(for Redis)实例的端口,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。 GaussDB(for Redis)支持与限制的命令,详情请参见开发规范。 由于GaussDB(for Redis)和开源Redis集群计算hash算法不同,因此GaussDB(for Redis)的部分命令需要给对应的key打上hash tag,否则会出现非预期的行为。hash tag使用建议参考开发规范。
  • 使用Sentinel模式连接实例 样例代码: import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import static org.redisson.config.ReadMode.MASTER; public class SingleServerTests { public static void testSentinel() { Config config = new Config(); config.useSentinelServers() .setMasterName(master_name) .setCheckSentinelsList(false) .setReadMode(MASTER) .setPassword(password) .addSentinelAddress("redis://172.xx.xx.xx:8635"); RedissonClient redisson = Redisson.create(config); execute(redisson); // send requests to database redisson.shutdown(); } public static void main(String[] args) { testSentinel(); } } 上述代码中“172.xx.xx.xx”为待连接GaussDB(for Redis)实例的负载均衡地址。 您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。 图2 查看负载均衡地址 上述代码中的“8635”为待连接GaussDB(for Redis)实例的端口,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。 GaussDB(for Redis)只是实现了Sentinel模式的接入方式,不采用原生sentinel的可用性功能。所以样例代码中,master_name固定为“mymaster”,必须设置“CheckSentinelsList”为fasle,必须设置ReadMode为MASTER。 GaussDB(for Redis)支持与限制的命令,详情请参见开发规范。 由于GaussDB(for Redis)和开源Redis集群计算hash算法不同,因此GaussDB(for Redis)的部分命令需要给对应的key打上hash tag,否则会出现非预期的行为。hash tag使用建议参考开发规范。
  • 使用JedisPool访问(推荐) 样例代码 import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; public class JedisPoolTests { private static void testPool() { String pwd = "a"; JedisPool pool = new JedisPool(new GenericObjectPoolConfig(), "172.xx.xx.xx", 8635, 2000, pwd); Jedis jedis = pool.getResource(); try { System.out.println(jedis.hgetAll("676296")); System.out.println(jedis.set("key1", "value1")); } finally { jedis.close(); } pool.destroy(); } public static void main(String[] args) { testPool(); } }
  • 使用JedisCluster访问 样例代码 import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; public class ClusterTests { private static void testCluster() { String pwd = "a"; JedisCluster cluster = new JedisCluster(new HostAndPort("172.xx.xx.xx", 8635), 200, 2000, 5, pwd, new GenericObjectPoolConfig()); System.out.println(cluster.hgetAll("676296")); System.out.println(cluster.set("key1", "value1")); } public static void main(String[] args) { testCluster(); } }
  • 操作步骤 获取GaussDB(for Redis)实例的负载均衡地址和端口信息。 负载均衡地址的查看方法请参见查看查看负载均衡地址及端口。 端口信息的获取方法请参见查看查看实例节点端口。 各实例地址的查看方法请参见查看查看内网IP地址或弹性公网IP。 登录弹性云服务器,具体操作请参见《弹性云服务器快速入门》中“登录弹性云服务器”。 安装.Net。Windows主机前往进入.NET官网下载,Linux主机需要安装 .NET Core 的密钥和存储库,再安装.Net运行时和SDK: sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm sudo yum install dotnet-sdk-7.0 sudo yum install dotnet-runtime-7.0 运行 dotnet --version 你将会看到你的.Net版本信息。 使用StackExchange.Redis客户端连接GaussDB(for Redis)实例。 创建项目 在命令行窗口中运行以下命令创建一个新的C#控制台应用程序;或者在Visual Studio中创建一个新的C#控制台应用程序。 dotnet new console -o redisdemo 安装Redis的C#客户端 StackExchange.Redis包。Visual Studio中您可以从NuGet包管理器中安装StackExchange.Redis。或者dotnet项目所在的命令行窗口,运行以下命令: dotnet add package StackExchange.Redis 使用单机方式连接GaussDB(for Redis) using System; using StackExchange.Redis; namespace redisdemo { class Program { static void Main(string[] args) { // 创建一个连接到Redis服务器的ConnectionMultiplexer对象 string redisConnectionString = " 192.xx.xx.xx:6379"; // 步骤1获取到的负载均衡地址 ConfigurationOptions options = ConfigurationOptions.Parse(redisConnectionString); options.Password = "your_password"; // 设置密码 ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(options); // 获取Redis数据库对象 IDatabase redisDb = redis.GetDatabase(); // 设置一个键值对 string key = "mykey"; string value = "myvalue"; redisDb.StringSet(key, value); string valueGet = redisDb.StringGet(key); Console.WriteLine($"键 {key} 对应的值为:{valueGet}"); } } } 预期输出 键 mykey 对应的值为:myvalue 使用集群方式连接GaussDB(for Redis)集群 using System; using StackExchange.Redis; namespace redisdemo { class Program { static void Main(string[] args) { ConfigurationOptions options = new ConfigurationOptions(); options.EndPoints.Add("192.xx.xx.xx:6379"); // 步骤1获得的实例集群节点1的地址和端口号 options.EndPoints.Add("192.xx.xx.xx:6379"); // 步骤1获得的实例集群节点2的地址和端口号 options.Password = "your_password"; // 设置密码 ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(options); // 获取Redis数据库对象 IDatabase redisDb = redis.GetDatabase(); // 设置一个键值对 string key = "mykey"; string value = "myvalue"; redisDb.StringSet(key, value); string valueGet = redisDb.StringGet(key); Console.WriteLine($"键 {key} 对应的值为:{valueGet}"); } } } 预期输出 键 mykey 对应的值为:myvalue