Java连接redis和redis基本命令

redis-server.exe redis.windows.conf

按配置启动redis服务

redis-cli.exe -h 127.0.0.1 -p 6379

启动redis客户端

set myKey abc    get myKey  del mykey

设置键值对key->value ,mykey->abc,获取键值,删除键

设置hash数据

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World"
"OK"
redis 127.0.0.1:6379> HGET runoob field1
"Hello"
redis 127.0.0.1:6379> HGET runoob field2
"World"

设置list数据

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的。

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob

1) "redis"
2) "rabitmq"
3) "mongodb"

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

zadd key score member 

实例

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
1) "mongodb"
2) "rabitmq"
3) "redis"

Java连接redis

package test2;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Tuple;
 
public class JedisTest {
	
	public static void print(int index,Object obj) {
		System.out.println(String.format("%d %s", index, obj.toString()));
	}
	public static void print(String str,Object obj) {
		System.out.println(str+" "+obj.toString());
	}
	
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
        
//      jedis.flushAll();//将全部数据库删除
        
        jedis.set("hello", "world");//设置key-value
		print("String", jedis.get("hello"));
		
		jedis.rename("hello", "newhello");//修改key名
		print("rename String", jedis.get("newhello"));
		
		jedis.setex("key", 15, "value");//设置一个键值对,并设置其存在多少秒
		
		jedis.set("pv", "100");
		jedis.incr("pv");//将对应键的值加1
		print("100+1", jedis.get("pv"));
		jedis.incrBy("pv", 5);//将对应键的值加任意值
		print("100+5", jedis.get("pv"));
		
		//List(列表操作)
		String listName = "listA";
		for(int i = 0; i < 10; i++)
			jedis.lpush(listName, "a" + String.valueOf(i));//将值推入列表中
		
		print(3, jedis.lrange(listName, 0, 10));//从列表中取出索引为0-10的值
		
		print(4, jedis.llen(listName));//返回该列表中有多少个元素
		
		print(5, jedis.lpop(listName));//将0位置的元素推出列表,并返回其值
		
		print(6, jedis.llen(listName));
		
		print(7, jedis.lindex(listName, 3));//返回下表为3的元素
		
		print(10, jedis.lrange(listName, 0, 10));

		//Map
		String userKey = "userxx";
		jedis.hset(userKey, "name", "jim");
		jedis.hset(userKey, "age", "12");
		jedis.hset(userKey, "phone", "7456454");
		 
		print("hash", jedis.hget(userKey, "name"));
		print("hash_all", jedis.hgetAll(userKey));//获取hash表中全部数据
		jedis.hdel(userKey, "phone");//hash表中删除一个字段
		print("hash_all", jedis.hgetAll(userKey));
		
		print("hash_all_key", jedis.hkeys(userKey));//获取hash表中所有的key
		print("hash_all_value", jedis.hvals(userKey));//获取hash表中所有的value
		print("hash_exist_key", jedis.hexists(userKey, "email"));//判断hash表中是否存在某字段
		
		jedis.hsetnx(userKey, "email", "123@77");//如果不存在某个字段,则添加该字段
		jedis.hsetnx(userKey, "name", "tom");//存在则不更新其值
		print("hash_all", jedis.hgetAll(userKey));
		
		//Set
		String likeKeys1 = "newsLike1";
		String likeKeys2 = "newsLike2";
		
		for(int i = 0; i < 10; i++) {
			jedis.sadd(likeKeys1, String.valueOf(i));//添加值到集合中
			jedis.sadd(likeKeys2, String.valueOf(i*2));
		}
		print("set_all_1", jedis.smembers(likeKeys1));//返回集合中的全部值
		print("set_all_2", jedis.smembers(likeKeys2));
		print("set_1_jiao_2", jedis.sinter(likeKeys1, likeKeys2));//两个集合求交集
		print("set_1_bing_2", jedis.sunion(likeKeys1, likeKeys2));//两个集合求并集
		print("set_diff", jedis.sdiff(likeKeys1, likeKeys2));//两个集合不同(前者相对于后者)
		print("set_exist", jedis.sismember(likeKeys1, "5"));//判断集合中是否存在某个值
		jedis.srem(likeKeys1, "5");//将某个值从集合中删除
		print("set_all_1", jedis.smembers(likeKeys1));
		
		print("set_length_1", jedis.scard(likeKeys1));//返回该集合中有多少个值
		jedis.smove(likeKeys2, likeKeys1, "14");//将第一个集合中的某个值移动到第二个集合中
		print("set_all_1", jedis.smembers(likeKeys1));
		print("set_all_2", jedis.smembers(likeKeys2));
		
		
		//SortedSet(优先队列)
		String rankKey = "rankKey";
		jedis.zadd(rankKey, 15, "jim");
		jedis.zadd(rankKey, 60, "Ben");
		jedis.zadd(rankKey, 90, "Lee");
		jedis.zadd(rankKey, 80, "Mei");
		jedis.zadd(rankKey, 75, "Lucy");
		print("zset_length", jedis.zcard(rankKey));//返回优先队列中元素的个数
		print("zset_count", jedis.zcount(rankKey, 61, 100));//返回优先队列中值在这个范围内的有多少个
		print("zset_score", jedis.zscore(rankKey, "Lucy"));//返回某一个键的值
		jedis.zincrby(rankKey, 2, "Lucy");//将存在的Lucy的值加2
		print("zset_score", jedis.zscore(rankKey, "Lucy"));
		jedis.zincrby(rankKey, 2, "tom");//将不存在的tom的值加2,会创建一个tom
		print("zset_count", jedis.zcount(rankKey, 0, 100));
		print("zset_range", jedis.zrange(rankKey, 0, 3));//返回按值的升序排列中前四个值的键名
		print("zset_revrange", jedis.zrevrange(rankKey, 0, 4));//返回按值的降序排序中前四个值的键名
		
		for(Tuple tuple : jedis.zrangeByScoreWithScores(rankKey, "0", "100")) {
			print("zset", tuple.getElement() + ":" + String.valueOf(tuple.getScore()));
		}
		
		print("zset_rank", jedis.zrank(rankKey, "Ben"));//返回某个键名升序排第几(实际是索引号)
		print("zset_revrank", jedis.zrevrank(rankKey, "Ben"));//返回某个键名降序排第几(实际是索引号)

		//redis是单线程的,最多只能用8个资源,所以每次用完需要关闭,可以通过关闭和不关闭测试
		JedisPool pool = new JedisPool();
		for(int i = 0; i < 20; i++) {
			Jedis j = pool.getResource();
			j.get("a");
			System.out.println("POOL" + i);
			j.close();
		}
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值