java連接linux Redis遇到的問題
昨天在Linux搭建了Redis服務,今天使用java連接測試了一下。要想使用java連接redis服務,就離不開jedis-2.6.1.jar。使用jedis連接redis十分方便。下面我們測試一下是否連接上redis服務:
package
com
.
coinvs
.
redis
.
util;
import redis.clients.jedis.Jedis;
//import redis.clients.jedis.Jedis;
public class RadisDemo {
public static void main( String [] args) {
//連接本地的 Redis 服務
Jedis jedis = new Jedis( "192.168.1.66" , 6379);
System . out . println( "Connection to server sucessfully");
//查看服務是否運行
System . out . println( "Server is running: " + jedis . ping());
}
}
import redis.clients.jedis.Jedis;
//import redis.clients.jedis.Jedis;
public class RadisDemo {
public static void main( String [] args) {
//連接本地的 Redis 服務
Jedis jedis = new Jedis( "192.168.1.66" , 6379);
System . out . println( "Connection to server sucessfully");
//查看服務是否運行
System . out . println( "Server is running: " + jedis . ping());
}
}
如果出現下圖,這說明沒有連接成功,不過不用擔心,這很好解決。

出現這種錯誤的原因有以下幾種:
- redis服務沒有開啟;
- 沒有正確輸入,ip、端口;
- Linux系統防火牆沒有關閉;
- 防火牆關閉了,但是訪問者ip,在redis.conf文件的bind之外。
簡單設置一下,應該就可以連接上了!
下面我們簡單說一下,jedis API的使用:
1.redis存儲字符串
// @Test
public void testString() {
//-----添加數據----------
jedis . set( "name" , "往往"); //向key-->name中放入了value--xinxin
System . out . println( jedis . get( "name")); //執行結果:xinxin
jedis . append( "name" , " is my lover"); //拼接
System . out . println( jedis . get( "name"));
jedis . del( "name"); //刪除某個鍵
System . out . println( jedis . get( "name"));
//設置多個鍵值對
jedis . mset( "name" , "liuling" , "age" , "23" , "qq" , "476777XXX");
System . out . println( jedis . get( "age"));
jedis . incr( "age"); //進行加1操作
System . out . println( jedis . get( "age"));
System . out . println( jedis . get( "name") + "-" + jedis . get( "age") + "-" + jedis . get( "qq"));
}
public void testString() {
//-----添加數據----------
jedis . set( "name" , "往往"); //向key-->name中放入了value--xinxin
System . out . println( jedis . get( "name")); //執行結果:xinxin
jedis . append( "name" , " is my lover"); //拼接
System . out . println( jedis . get( "name"));
jedis . del( "name"); //刪除某個鍵
System . out . println( jedis . get( "name"));
//設置多個鍵值對
jedis . mset( "name" , "liuling" , "age" , "23" , "qq" , "476777XXX");
System . out . println( jedis . get( "age"));
jedis . incr( "age"); //進行加1操作
System . out . println( jedis . get( "age"));
System . out . println( jedis . get( "name") + "-" + jedis . get( "age") + "-" + jedis . get( "qq"));
}
2.redis操作Map
// @Test
public void testMap() {
//-----添加數據----------
Map < String , String > map = new HashMap < String , String >();
map . put( "name" , "xinxin");
map . put( "age" , "22");
map . put( "qq" , "123456");
jedis . hmset( "user" , map);
//取出user中的name,執行結果:[minxr]-->注意結果是一個泛型的List
//第一個參數是存入redis中map對象的key,后面跟的是放入map中的對象的key,后面的key可以跟多個,是可變參數
List < String > rsmap = jedis . hmget( "user" , "name" , "age" , "qq");
System . out . println( rsmap);
//刪除map中的某個鍵值
jedis . hdel( "user" , "age");
System . out . println( jedis . hmget( "user" , "age")); //因為刪除了,所以返回的是null
System . out . println( jedis . hlen( "user")); //返回key為user的鍵中存放的值的個數2
System . out . println( jedis . exists( "user")); //是否存在key為user的記錄 返回true
System . out . println( jedis . hkeys( "user")); //返回map對象中的所有key
System . out . println( jedis . hvals( "user")); //返回map對象中的所有value
Iterator < String > iter = jedis . hkeys( "user" ). iterator();
while ( iter . hasNext ()){
String key = iter . next();
System . out . println( key + ":" + jedis . hmget( "user" , key));
}
}
public void testMap() {
//-----添加數據----------
Map < String , String > map = new HashMap < String , String >();
map . put( "name" , "xinxin");
map . put( "age" , "22");
map . put( "qq" , "123456");
jedis . hmset( "user" , map);
//取出user中的name,執行結果:[minxr]-->注意結果是一個泛型的List
//第一個參數是存入redis中map對象的key,后面跟的是放入map中的對象的key,后面的key可以跟多個,是可變參數
List < String > rsmap = jedis . hmget( "user" , "name" , "age" , "qq");
System . out . println( rsmap);
//刪除map中的某個鍵值
jedis . hdel( "user" , "age");
System . out . println( jedis . hmget( "user" , "age")); //因為刪除了,所以返回的是null
System . out . println( jedis . hlen( "user")); //返回key為user的鍵中存放的值的個數2
System . out . println( jedis . exists( "user")); //是否存在key為user的記錄 返回true
System . out . println( jedis . hkeys( "user")); //返回map對象中的所有key
System . out . println( jedis . hvals( "user")); //返回map對象中的所有value
Iterator < String > iter = jedis . hkeys( "user" ). iterator();
while ( iter . hasNext ()){
String key = iter . next();
System . out . println( key + ":" + jedis . hmget( "user" , key));
}
}
3.jedis操作List
// @Test
public void testList (){
//開始前,先移除所有的內容
jedis . del( "java framework");
System . out . println( jedis . lrange( "java framework" , 0 ,- 1));
//先向key java framework中存放三條數據
jedis . lpush( "java framework" , "spring");
jedis . lpush( "java framework" , "struts");
jedis . lpush( "java framework" , "hibernate");
//再取出所有數據jedis.lrange是按范圍取出,
// 第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有
System . out . println( jedis . lrange( "java framework" , 0 ,- 1));
jedis . del( "java framework");
jedis . rpush( "java framework" , "spring");
jedis . rpush( "java framework" , "struts");
jedis . rpush( "java framework" , "hibernate");
System . out . println( jedis . lrange( "java framework" , 0 ,- 1));
}
public void testList (){
//開始前,先移除所有的內容
jedis . del( "java framework");
System . out . println( jedis . lrange( "java framework" , 0 ,- 1));
//先向key java framework中存放三條數據
jedis . lpush( "java framework" , "spring");
jedis . lpush( "java framework" , "struts");
jedis . lpush( "java framework" , "hibernate");
//再取出所有數據jedis.lrange是按范圍取出,
// 第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有
System . out . println( jedis . lrange( "java framework" , 0 ,- 1));
jedis . del( "java framework");
jedis . rpush( "java framework" , "spring");
jedis . rpush( "java framework" , "struts");
jedis . rpush( "java framework" , "hibernate");
System . out . println( jedis . lrange( "java framework" , 0 ,- 1));
}
4. jedis操作Set
// @Test
public void testSet (){
jedis . del( "user");
//添加
jedis . sadd( "user" , "liuling");
jedis . sadd( "user" , "xinxin");
jedis . sadd( "user" , "ling");
jedis . sadd( "user" , "zhangxinxin");
jedis . sadd( "user" , "who");
//移除noname
jedis . srem( "user" , "who");
System . out . println( jedis . smembers( "user")); //獲取所有加入的value
System . out . println( jedis . sismember( "user" , "xinxin")); //判斷 who 是否是user集合的元素
System . out . println( jedis . srandmember( "user")); //隨機返回一個user中元素的value
System . out . println( jedis . scard( "user")); //返回集合的元素個數
}
public void testSet (){
jedis . del( "user");
//添加
jedis . sadd( "user" , "liuling");
jedis . sadd( "user" , "xinxin");
jedis . sadd( "user" , "ling");
jedis . sadd( "user" , "zhangxinxin");
jedis . sadd( "user" , "who");
//移除noname
jedis . srem( "user" , "who");
System . out . println( jedis . smembers( "user")); //獲取所有加入的value
System . out . println( jedis . sismember( "user" , "xinxin")); //判斷 who 是否是user集合的元素
System . out . println( jedis . srandmember( "user")); //隨機返回一個user中元素的value
System . out . println( jedis . scard( "user")); //返回集合的元素個數
}
5.jedis 排序
@Test
public void test() throws InterruptedException {
//
//注意,此處的rpush和lpush是List的操作。是一個雙向鏈表(但從表現來看的)
jedis . del( "a"); //先清除數據,再加入數據進行測試
jedis . rpush( "a" , "1");
jedis . lpush( "a" , "6");
jedis . lpush( "a" , "3");
jedis . lpush( "a" , "9");
System . out . println( jedis . lrange( "a" , 0 ,- 1)); // [9, 3, 6, 1]
System . out . println( jedis . sort( "a")); //[1, 3, 6, 9] //輸入排序后結果
System . out . println( jedis . lrange( "a" , 0 ,- 1));
}
public void test() throws InterruptedException {
//
//注意,此處的rpush和lpush是List的操作。是一個雙向鏈表(但從表現來看的)
jedis . del( "a"); //先清除數據,再加入數據進行測試
jedis . rpush( "a" , "1");
jedis . lpush( "a" , "6");
jedis . lpush( "a" , "3");
jedis . lpush( "a" , "9");
System . out . println( jedis . lrange( "a" , 0 ,- 1)); // [9, 3, 6, 1]
System . out . println( jedis . sort( "a")); //[1, 3, 6, 9] //輸入排序后結果
System . out . println( jedis . lrange( "a" , 0 ,- 1));
}
簡單的學習一下jedis的API,后續還會補充!