如何连接redis数据库,第1张

1、在配置文件redisconf中把绑定的Ip注释掉 

 

2、在配置文件redisconf中把protected-mode 改为 no 

3、在配置文件redisconf中把requirepass 设置redis访问授权密码(自己随意设置就好),也可以登录redis客户端使用命令设置:如下: 

/redis-cli 

config set requirepass 123 //123是密码 

经过以上三步基本就可以了,不过也有特殊情况,访问的端口号6379有可能会被防火墙拦截,需要关闭系统的防火墙或取消对6379端口的拦截,这里不在细述。 

接下来就可以创建项目实现操作redis数据库了。在这里我用的开发工具是eclipse,在eclipse中创建一个java Project项目如下图所示: 

项目创建完成后,在src同级目录下创建lib文件夹,导入操作数据库所需jar包(晚上自行下载),jedis用来操作数据库,commons-pool用来实现数据库连接池。 

启动redis服务器: 

创建RedisDemoSimplejava代码如下:

package comredisredisDb;

import redisclientsjedisJedis;public class RedisDemoSimple {    public static void main(String[] args) {        //ip地址为虚拟机Ip 端口为redis端口

        Jedis jedis = new Jedis("192168228129", 6379);        //redis访问权限 为redis配置文件中redisconf中配置的requirepass

        jedisauth("myredis");

        jedisset("redis_first", "hello");

        Systemoutprintln("key redis_first:"+jedisget("redis_first"));

    }

}

控制台打印如下:

启动redis客户端查询插入数据库的值: 

 

到此就连接成功了。

Redis主要用作高可用、缓存场景使用,对于阿里云的Redis产品,为了保障其应用效果,原则上只能在阿里云内网才能连接到阿里云的Redis,你如果是直接租赁的阿里云的Redis,那么你通过公网来访问这个Redis,还需要进行一定的配置,具体可参见阿里云的以下帮助连接:

网页链接

网页链接

第一:非集群状态下

非集群状态下用Jedis获取Redis连接,得到Jedis对象即可,一共有两种:

1利用Jedis构造器,仅限用于测试,在实际项目中肯定是用JedisPool。

Jedis(String host);

Jedis(String host , int port);

2利用JedisPool

主要是利用Jedis jedis=jedisPoolgetResource();

JedisPool有N多个构造器,常用的构造器参数有GenericObjectPoolConfig poolConfig,String host,int port,int timeout,String password,创建GenericObjectPoolConfig对象时我们一般用其子类JedisPoolConfig (redisclientsjedisJedisPoolConfig),timeout是连接redis服务器的超时时间,以毫秒为单位,一般设置为0,如果不设为0,则不可设置太小,如果设成1、2,那么可能因为网络原因在1毫秒、2毫秒之内没有连上服务器而报错。见下例:

[java] view plain copy

public static void main(String[] args) {

JedisPoolConfig poolConfig = new JedisPoolConfig();

// 最大连接数

poolConfigsetMaxTotal(2);

// 最大空闲数

poolConfigsetMaxIdle(2);

// 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:

// Could not get a resource from the pool

poolConfigsetMaxWaitMillis(1000);

JedisPool pool = new JedisPool(poolConfig, "19216883128", 6379, 0, "123");

Jedis jedis = null;

try {

for (int i = 0; i < 5; i++) {

jedis = poolgetResource();

jedisset("foo" + i, "bar" + i);

Systemoutprintln("第" + (i + 1) + "个连接, 得到的值为" + jedisget("foo" + i));

// 用完一定要释放连接

jedisclose();

}

} finally {

poolclose();

}

}

如上,创建出一个JedisPool对象,然后调用其getResource()方法获取redis连接即可,之后就可以调用Jedis API操作redis了。jedis连接用完要释放即close,如果不close,则产生的连接会越来越多,当达到了最大连接数,再想获得连接,就会等待,当超过了最大等待时间后就会报异常。

第二:集群状态下

集群状态下用Jedis获取redis连接,是得到JedisCluster对象,之后对redis进行操作都是用此对象的方法进行的:

[java] view plain copy

public static void main(String[] args) {

JedisPoolConfig poolConfig = new JedisPoolConfig();

// 最大连接数

poolConfigsetMaxTotal(1);

// 最大空闲数

poolConfigsetMaxIdle(1);

// 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:

// Could not get a resource from the pool

poolConfigsetMaxWaitMillis(1000);

Set<HostAndPort> nodes = new LinkedHashSet<HostAndPort>();

nodesadd(new HostAndPort("19216883128", 6379));

nodesadd(new HostAndPort("19216883128", 6380));

nodesadd(new HostAndPort("19216883128", 6381));

nodesadd(new HostAndPort("19216883128", 6382));

nodesadd(new HostAndPort("19216883128", 6383));

nodesadd(new HostAndPort("19216883128", 6384));

JedisCluster cluster = new JedisCluster(nodes, poolConfig);

String name = clusterget("name");

Systemoutprintln(name);

clusterset("age", "18");

Systemoutprintln(clusterget("age"));

try {

clusterclose();

} catch (IOException e) {

eprintStackTrace();

}

}

用集群时,好像没有办法设置集群的参数,比如最大连接数,虽然在创建JedisCluster 对象时传了JedisPoolConfig对象进去,但是JedisPoolConfig对象中的设置是不生效的。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何连接redis数据库

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情