redis-server redisconf
当redis启动服务的时候没有加载正确配置文件会出现错误
修改配置文件中的绑定地址
启动redis服务
2、防火墙问题(直接暴力关闭防火墙)
正常情况下,无论是本地远程访问redis服务器还是服务器本地访问redis,都可以直接使用了方法/步骤
1、打开已经安装成功的Xshell,点击左上角新建按钮,打开新建会话属性对话框
2、连接信息验证,输入redis服务器的主机IP,端口号,名称(自定义,如test)
3、用户身份验证,方法:Password,输入连接redis服务器的用户名和密码;点击确定按钮
4、点击会话对话框中的连接按钮
5、连接成功状态
6、通过命令
redis-cli
-a
test123;连接redis数据库,其中test123数据库是名称。到这里为止,您已经通过Xshell能完整的 *** 作redis了,您会了吗?使用d性云服务器连接。单片机隶属于美国INTEL公司,根据查询美国INTEL公司显示,单片机连接redis是使用d性云服务器连接。美国INTEL公司是半导体行业和计算创新领域的全球领先厂商,正转型为一家以数据为中心的公司。关于Redis未授权访问,以下说法是不正确的:
说法:Redis默认不允许未授权访问,只有在配置文件中明确设置了bind参数为0000才会存在未授权访问的风险。
事实:实际上,Redis默认是没有开启认证机制的,也就是说任何人都可以访问Redis服务器。只要知道Redis服务器的IP地址和端口号,就可以直接连接到Redis服务器,并进行任意 *** 作,包括读写数据、执行命令等。因此,如果不对Redis进行安全配置,就会存在未授权访问的风险。
为了避免未授权访问,建议对Redis进行安全配置,包括设置密码认证、限制IP访问等措施,以保障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对象中的设置是不生效的。
注释掉 bind 127001 这一行(在前面添加一个 # 就是注释)。
重启 redis 服务。
注意: redis 的配置文件位置不是100%一样,有可能你的服务器的 redisconfig 文件和我的位置不一样,请注意甄别。
如果还不行,检查防火墙设置,看看是否有禁止 6379 端口或者限制远程 ip 访问。 如果是购买的云服务器 ,检查 安全组 是否放行 6379 端口(例如:如果你购买的是阿里云的服务器,则登录阿里云的控制台,查看redis所在服务器的安全组设置)。
将命令中的 88888888 改成你的 ip 地址,将 6379 改成你的 redis 的端口(默认端口就是 6379 ),将 password 改成你的 redis 授权密码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)