1. 程式人生 > >redis在linux中安裝步驟以及java遠端呼叫redis

redis在linux中安裝步驟以及java遠端呼叫redis

redis在linux中安裝步驟:
1.安裝準備環境:安裝gcc
yum install gcc-c++
2.下載redis安裝包
wget http://download.redis.io/releases/redis-5.0.0.tar.gz
3.解壓redis
tar xzf redis-5.0.0.tar.gz 
4.修改配置檔案redis.conf
daemonize no改為daemonize yes
5.進入到src目錄下啟動redis
./redis-server ../redis.conf
6.檢視redis是否啟動成功
ps -ef | grep -i redis
7.停止redis命令
./redis-cli shutdown
8.啟動客戶端
./redis-cli
8.redis的簡單使用
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> 

java遠端連線redis

  • 我們要在Java平臺上使用redis,肯定需要Jedis這個客戶端。首先在pom檔案中引入Jedis的依賴
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
  • 普通方式建立Jedis物件。
package com.example.redis;
import org.junit.Test;

import redis.clients.jedis.Jedis;

public class JedisDemo {

	@Test
	public void methodOne() {
        Jedis jedis = new Jedis("192.168.10.128", 6379);
        jedis.set("name", "wangwu");
        String value = jedis.get("name");
        System.out.println(value);
        jedis.close();
    }

}
  • 通過執行緒安全的連線池來建立Jedis物件。
@Test
	public void methodTwo() {
        //獲得連線池的配置物件
        JedisPoolConfig config = new JedisPoolConfig();
        //設定最大連線數
        config.setMaxTotal(30);
        //設定最大空閒連線數
        config.setMaxIdle(10);
        //獲得連線池
        JedisPool jedisPool = new JedisPool(config, "192.168.10.128", 6379);

        Jedis jedis = null;

        try {
            jedis = jedisPool.getResource();
            String value = jedis.get("name");
            System.out.println(value);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }

            jedisPool.close();
        }
    }

在測試的時候會報錯

報錯①

這個錯誤是因為我們沒有在防火牆中開始6379埠,我的虛擬機器為centos7版本,開始方式如下

firewall-cmd --zone=public --add-port=6379/tcp --permanent
開啟埠之後,重啟防火牆

firewall-cmd --reload

這個時候測試java可能還會報錯,連結被拒絕

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
	at redis.clients.jedis.Connection.connect(Connection.java:154)
	at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:83)
	at redis.clients.jedis.Connection.sendCommand(Connection.java:93)
	at redis.clients.jedis.BinaryClient.set(BinaryClient.java:100)
	at redis.clients.jedis.Client.set(Client.java:29)
	at redis.clients.jedis.Jedis.set(Jedis.java:65)
	at redis.Demo1.main(Demo1.java:10)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at redis.clients.jedis.Connection.connect(Connection.java:148)
	... 6 more

可能的原因:

redis伺服器的redis.conf配置中bind 127.0.0.1

 應該改為:bind 0.0.0.0

重啟redis服務,再使用Java連線即可。