报错:
解决:
1、配置安全组,在阿里云上:
2、修改redis.conf配置文件:3种修改方式。
- 将bind 127.0.0.1 注释掉
- 或者修改为:bind 0.0.0.0
- 或者修改为:bind 指定ip
- 来达到允许远程访问redis
3、编辑防火强配置文件
vim /etc/sysconfig/iptables
在配文件中开放Linux的6379端口: 添加下面的一句。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
重启防火墙:
service iptables restart #这是centos6.x 的重启命令。
修改完测试:
public class JedisTest {
private static Jedis jedis;
static{
jedis = new Jedis(ip地址,6379);
}
public static void main(String[] args) {
System.out.println(jedis.ping());
}
}
结果:
接下来对jedis的方法五大数据类型进行测试:
public static void redisKey(){
jedis.select(0); //切换为0号数据库
jedis.flushDB(); //清空当前数据库
System.out.println("判断name是否存在:"+jedis.exists("name"));
System.out.println("设置name:linging =>"+jedis.set("name","linging"));
System.out.println("查看name是什么类型:"+jedis.type("name"));
System.out.println("将name从默认下标为0的数据库移动到3号数据库:"+jedis.move("name",3));
System.out.println("切换到3号数据库:"+jedis.select(3));
System.out.println("设置name5秒后过期:"+jedis.expire("name",5));
System.out.println("查看name还有多长时间过期:"+jedis.ttl("name")+"秒");
}
结果:
String类型:
public static void str(){
jedis.select(0); //切换为0号数据库
jedis.flushDB(); //清空当前数据库
System.out.println("设置name: linging =>"+jedis.set("name","linging"));
System.out.println("设置age: 22 => "+jedis.set("age","22"));
System.out.println("获取name的值:"+jedis.get("name"));
System.out.println("往name中追加hello:"+jedis.append("name","hello"));
System.out.println("获取name的值:"+jedis.get("name"));
System.out.println("查看name的长度:"+jedis.strlen("name"));
System.out.println("让age自增1:"+jedis.incr("age"));
System.out.println("让age自减1:"+jedis.decr("age"));
System.out.println("让age自增10:"+jedis.incrBy("age",10));
System.out.println("让age自减10:"+jedis.decrBy("age",10));
System.out.println("截取name下标范围[0,3]的子串:"+jedis.getrange("name",0,3));
System.out.println("替换name从下标3开始,替换为xxx:"+jedis.setrange("name",3,"xxx"));
System.out.println("获取name的值:"+jedis.get("name"));
System.out.println("同时设置多个值:k1 v1 k2 v2 k3 v3: "+jedis.mset("k1","v1","k2","v2","k3","v3"));
System.out.println("同时获取多个值:k1 k2 k3: "+jedis.mget("k1","k2","k3"));
System.out.println("设置school:jyu 10秒后过期:"+jedis.setex("school", 10, "jyu"));
System.out.println("设置school是否成功:"+jedis.setnx("school","qinghua"));
System.out.println("设置对象:"+jedis.set("user:1", "{name:zhangsan,age:100}"));
System.out.println("先获取name的值,在设置name的值为:hehe:"+jedis.getSet("name","hehe"));
System.out.println("获取name的值:"+jedis.get("name"));
}
结果:
List类型:
public static void list(){
jedis.select(0); //切换为0号数据库
jedis.flushDB(); //清空当前数据库
System.out.println("向mylist中压入one、two、three:"+jedis.lpush("mylist","one","two","three"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("向mylist尾部插入four:"+jedis.rpush("mylist","four"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("移除头部的第一个元素:"+jedis.lpop("mylist"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("移除尾部的第一个元素:"+jedis.rpop("mylist"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("获取下标索引为1的值:"+jedis.lindex("mylist",1));
System.out.println("获取mylist的长度:"+jedis.llen("mylist"));
System.out.println("向mylist中压入one、two、three:"+jedis.lpush("mylist","one","two","three"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("移除mylist中的2个two:"+jedis.lrem("mylist",2,"two"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("截取列表下标为[0,1]的部分:"+jedis.ltrim("mylist",0,1));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("将列表oldList的尾部第一个值移除,并将该值添加到newList的头部:"+jedis.rpoplpush("mylist","mylist"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("将下标为0的值更新为two:"+jedis.lset("mylist",0,"two"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("在列表中指定的two前边添加xxx:"+jedis.linsert("mylist", ListPosition.BEFORE,"two","xxx"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
System.out.println("在列表中指定的two后边添加mmm:"+jedis.linsert("mylist", ListPosition.AFTER,"two","mmm"));
System.out.println("取出mylist的全部值:"+jedis.lrange("mylist",0,-1));
}
结果:
Set类型:
public static void set() {
jedis.select(0); //切换为0号数据库
jedis.flushDB(); //清空当前数据库
System.out.println("往myset中设置值:"+jedis.sadd("myset","hello","hello1","hello2"));
System.out.println("遍历myset中的全部值:"+jedis.smembers("myset"));
System.out.println("判断集合中是否存在hello:"+jedis.sismember("myset","hello"));
System.out.println("获取集合中的元素个数:"+jedis.scard("myset"));
System.out.println("移除myset中的hello:"+jedis.srem("myset","hello"));
System.out.println("遍历myset中的全部值:"+jedis.smembers("myset"));
System.out.println("随机从myset中抽取一个元素:"+jedis.srandmember("myset"));
System.out.println("随机从myset中抽取count个元素:"+jedis.srandmember("myset",2));
System.out.println("随机从myset中移除一个元素:"+jedis.spop("myset"));
System.out.println("随机从myset中移除一个元素:"+jedis.spop("myset"));
System.out.println("往myset1中设置值:"+jedis.sadd("myset1","a","b","c"));
System.out.println("往myset2中设置值:"+jedis.sadd("myset2","c","d","e"));
System.out.println("求myset1和myset2的差集:"+jedis.sdiff("myset1","myset2"));
System.out.println("求myset1和myset2的交集:"+jedis.sinter("myset1","myset2"));
System.out.println("求myset1和myset2的并集:"+jedis.sunion("myset1","myset2"));
}
结果:
Hash类型:
public static void hash(){
jedis.select(0); //切换为0号数据库
jedis.flushDB(); //清空当前数据库
System.out.println("设置myhash:"+jedis.hset("myhash", "name", "linging"));
Map<String, String> map = new HashMap<String, String>();
map.put("age","22");
map.put("gender","man");
System.out.println("设置多个值:"+jedis.hmset("myhash",map));
System.out.println("获取name:"+jedis.hget("myhash","name"));
System.out.println("获取多个值:"+jedis.hmget("myhash","age","gender"));
System.out.println("获取全部值:"+jedis.hgetAll("myhash"));
System.out.println("删除gender:"+jedis.hdel("myhash","gender"));
System.out.println("查看myhash有多少对:"+jedis.hlen("myhash"));
System.out.println("判断gender是否存在:"+jedis.hexists("myhash","gender"));
System.out.println("获取myhash的所有key:"+jedis.hkeys("myhash"));
System.out.println("获取myhash的所有value:"+jedis.hvals("myhash"));
System.out.println("获取age的值并加5:"+jedis.hincrBy("myhash","age",5));
System.out.println("获取全部值:"+jedis.hgetAll("myhash"));
System.out.println("设置值是否成功:"+jedis.hsetnx("myhash","name","llll"));
System.out.println("获取全部值:"+jedis.hgetAll("myhash"));
}
结果:
Zset类型:
public static void zset(){
jedis.select(0); //切换为0号数据库
jedis.flushDB(); //清空当前数据库
System.out.println("添加一个值:"+jedis.zadd("score", 80, "zhangsan"));
Map<String, Double> map = new HashMap<String, Double>();
map.put("xiaoming",30d);
map.put("lisi",60d);
map.put("xiaohei",99d);
System.out.println("添加多个值:"+jedis.zadd("score",map));
System.out.println("获取全部值:"+jedis.zrange("score",0,-1));
System.out.println("显示score的全部值和分数小->大:"+jedis.zrangeByScoreWithScores("score","-inf","+inf"));
System.out.println("显示score的全部值大->小:"+jedis.zrevrange("score",0,-1));
System.out.println("移除score中的xiaohei:"+jedis.zrem("score","xiaohei"));
System.out.println("获取score中的元素个数:"+jedis.zcard("score"));
System.out.println("获取指定区间[0,70]的元素个数:"+jedis.zcount("score",0,70));
}
结果: