在C#环境如何使用百度云提供的 redis服务

.Net技术 码拜 9年前 (2015-04-01) 921次浏览 0个评论

百度开放服务平台提供了 redis服务
官方提供的 各类语言调用如下:
http://developer.baidu.com/wiki/index.php?title=docs/cplat/bae/redis

其中没有C#调用方式,
C#调用原生的redis 常用的是servicestack,

1.百度提供的redis有 username 和 password 等信息,除了host,port外还需要额外的auth。
2.java的jedis通过jedis.auth(username + “-” + password + “-” + databaseName);来auth。
问题:servicestack如何连接百度redis,如何做auth操作啊?

import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import redis.clients.jedis.Jedis;
 
public class RedisBasic extends HttpServlet { 
 
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
            try {
        	/*****1. 填写数据库相关信息(请查找数据库详情页)*****/
        	String databaseName = " eiZrxDYAgZRYcJuTRljT"; 
        	String host = "redis.duapp.com";
        	String portStr = "80";
        	int port = Integer.parseInt(portStr);
        	String username = " urtgxzMPVigNEtOQF7yzg7C9";//用户名(api key);
        	String password = "1e0jDqkZ7fUwNgFD5LzwPY4YAQURFGYM";//密码(secret key)
 
			/******2. 接着连接并选择数据库名为databaseName的服务器******/
          	Jedis jedis = new Jedis(host,port);
		jedis.connect();
		jedis.auth(username + "-" + password + "-" + databaseName);
          	/*至此连接已完全建立,就可对当前数据库进行相应的操作了*/
		/*3. 接下来就可以使用redis数据库语句进行数据库操作,详细操作方法请参考java-redis官方文档*/
		PrintWriter out = resp.getWriter();
          	//删除所有redis数据库中的key-value
          	jedis.flushDB();
                //简单的key-value设置
      	        jedis.set("name", "bae");
      	        System.out.println("name | " + jedis.get("name"));
	    } catch (Exception e) {
	        e.printStackTrace(resp.getWriter());
	    }
        }
}
在C#环境如何使用百度云提供的 redis服务
RedisClient有地方设呀,你看看构造函数

  public RedisClient(string host, int port, string password = null, long db = DefaultDb)
            : base(host, port, password, db)
        {
            Init();
        }

在C#环境如何使用百度云提供的 redis服务
引用 1 楼 wyd1520 的回复:

RedisClient有地方设呀,你看看构造函数

  public RedisClient(string host, int port, string password = null, long db = DefaultDb)
            : base(host, port, password, db)
        {
            Init();
        }

我有看到这个重载,但是他只有 password 和 db,
但是百度的有 password db 还有 username

在C#环境如何使用百度云提供的 redis服务
引用 2 楼 kylinyxp 的回复:
Quote: 引用 1 楼 wyd1520 的回复:

RedisClient有地方设呀,你看看构造函数

  public RedisClient(string host, int port, string password = null, long db = DefaultDb)
            : base(host, port, password, db)
        {
            Init();
        }

我有看到这个重载,但是他只有 password 和 db,
但是百度的有 password db 还有 username

那个password 就是 username + “-” + password + “-” + databaseName 这个的组合就是了,
java 的 jedis.auth(password) 这是他的方法
C# 的那个参数等同于上面的password 
你就直接把这个串 username + “-” + password + “-” + databaseName  放到C#的password即可

在C#环境如何使用百度云提供的 redis服务
如您所说的方法,在redisClient.Set(“test”, “xxxxx”);执行时报异常,
在C#环境如何使用百度云提供的 redis服务
好像不支持这种方式。
我将账号密码信息都提供在下面的源码处,请大家把我试下。

private void button1_Click(object sender, EventArgs e)
        {
            string host = "redis.duapp.com";
            string databaseName = "LDqwYTGrcciFDReojQhq";
            int port = 80;
            string username = "jXGOrZKkOMYOdHQP4odd9V9v";
            string password = "7G4t5ghVCwerjdXahlPWh7qHIyZRQ7aq";
            string passwordStr = username + "-" + password + "-" + databaseName;

            using (RedisClient redisClient = new RedisClient(host, port, passwordStr))
            {
                redisClient.Set("test", "xxxxx");

                label1.Text = redisClient.Get<string>("test");
            }

        }
在C#环境如何使用百度云提供的 redis服务
40分
这不都提示了么。无法实列redis.duapp.com:80这个,你先查一下,这个能不能用。
在C#环境如何使用百度云提供的 redis服务
百度的redis服务只能在它的内网使用,也就是说只能用它的云主机类的产品才能用。
外网连不上。结贴。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明在C#环境如何使用百度云提供的 redis服务
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!