启动: redis-server redis.conf
客户端: redis-cli
查看端口占用: netstat -tunpl|grep 6379
退出客户端: exit

1.数据类型

(1)String(字符串)

set xxx aaa     //设置xxx
get xxx     //获取xxx
del xxx     //删除xxx
mset name1 111 name2 222 name3 333 name4 444    //设置多个
mget name1 name2 name3    //查看多个
exists xxx     //查看是否存在
type aaa      //查看value的数据类型
randomkey     //从当前库中随机返回一个key
FLUSHdb     //清空数据 
FLUSHALL     //清空所有

(2)Hash(哈希)

赋值:
HSET KEY  FIELD  VALUE    //为指定的KEY,设定FIELD/VALUE  
HMSET  KEY  FIELD VALUE [FIELD1,VALUE1]…… 同时将多个 field-value (域-值)对设置到哈希表 key 中。

取值:
HGET KEY FIELD   //获取存储在HASH中的值,根据FIELD得到VALUE
HMGET key field[field1]      //获取key所有给定字段的值
HGETALL key                 //返回HASH表中所有的字段和值
HKEYS key   //获取所有哈希表中的字段
HVALS key   //获取所有哈希表中的值
HLEN key   //获取哈希表中字段的数量

删除语法:
HDEL KEY field1[field2]    //删除一个或多个HASH表字段

(3)List(列表)

LPUSH key value1 [value2]     // 将一个或多个值插入到列表头部
RPUSH key value1 [value2]    // 在列表中添加一个或多个值
BLPOP key1 [key2 ] timeout    // 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOP key1 [key2 ] timeout    // 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
LINSERT key BEFORE|AFTER pivot value    // 在列表的元素前或者后插入元素
LINDEX key index    // 通过索引获取列表中的元素
LLEN key     // 获取列表长度
LRANGE key start stop    //获取列表指定范围内的元素

(4)Set(集合)

SADD key member1 [member2]    // 向集合添加一个或多个成员
SMEMBERS key    // 返回集合中的所有成员
SISMEMBER key member    // 1表示存在,0表示不存在或该key本身就不存在(无论集合中有多少元素都可以极速地返回结果)
SREM key member1 [member2]    // 移除集合中一个或多个成员
SINTER key1 [key2]      //返回给定所有集合的交集
SDIFF key1 [key2]     // 返回给定所有集合的差集(属于key1不属于key2的集合)
SUNION key1 [key2]     // 返回所有给定集合的并集
SCARD key    //获取集合中成员的数量
sdiffstore destination key1 [key2]    // 将key1、key2相差的成员存储在destination中
sinterstore destination key1 [key2]     //将返回的交集存储在destination中
sunionstore destination key1 [key2]     //将返回的并集存储在destination中

(5)Zset(sorted set:有序集合)

ZADD key score1 member1 [score2 member2]    // 向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZRANGE key start stop [WITHSCORES]     // 通过索引区间返回有序集合指定区间内的成员
ZCOUNT key min max    // 计算在有序集合中指定区间分数的成员数
ZREM key member [member ...]    // 移除有序集合中的一个或多个成员
ZCARD key    // 获取有序集合的成员数
ZINCRBY key increment member    // 有序集合中对指定成员的分数加上增量 increment 
ZSCORE key member    // 返回有序集中,成员的分数值
ZRANK key member    // 返回有序集合中指定成员的索引
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]    // 通过分数返回有序集合指定区间内的成员
ZINTERSTORE destination numkeys key [key ...]    //计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
ZUNIONSTORE destination numkeys key [key ...]    //计算给定的一个或多个有序集的并集,并存储在新的 key 中

(6) 代码练习

public class App 
{
    public static void main( String[] args )
    {
    	Jedis jedis = new Jedis("8.8.8.8",6379);
    	//jedis.flushAll();
        //System.out.println( "Hello World!" + jedis.ping());
        /*****1.字符串(String)*****/
//    	jedis.set("name1", "aaa");
//        System.out.println(jedis.get("name1"));
//    	jedis.del("name1");
//    	
//    	jedis.mset("name1","aaa","name2","bbb","name3","ccc");
//    	System.out.println(jedis.mget("name1","name2","name3"));
//    	
//    	System.out.println(jedis.exists("name1"));
//    	System.out.println(jedis.exists("name","name0","name1","name2","name3"));
//    	System.out.println(jedis.keys("*"));
//    	System.out.println(jedis.type("name1"));
//    	System.out.println(jedis.randomKey());
//    	System.out.println(jedis.flushDB());
//    	System.out.println(jedis.get("name1"));
//    	System.out.println(jedis.flushAll());
//    	System.out.println(jedis.randomKey());
    	
    	/****2.哈希(Hash)******/
    	/*
    	HashMap<String,String> hmap = new HashMap<String,String>();
    	hmap.put("name5", "eee");
    	hmap.put("name4", "ddd");
    	hmap.put("id", "666");
    	// 设置值
    	jedis.hset("user", "name6", "fff");
    	jedis.hmset("user", hmap);
    	// 取值
    	System.out.println("hget:\t" + jedis.hget("user", "name4"));
    	System.out.println("hmget:\t" + jedis.hmget("user", "name4","name5","name6"));
    	System.out.println("hgetAll:\t" + jedis.hgetAll("user"));
    	System.out.println("keys:\t" + jedis.keys("*"));
    	System.out.println("hkeys:\t" + jedis.hkeys("user"));
    	System.out.println("hvals:\t" + jedis.hvals("user"));
    	System.out.println("hlen:\t" + jedis.hlen("user"));
    	// 删除field
    	System.out.println("hdel\t" + jedis.hdel("user","name4"));
    	System.out.println("hdel\t" + jedis.hdel("user","name5","name6"));
    	System.out.println(jedis.hgetAll("user"));
    	// 清空
    	System.out.println(jedis.flushAll());
    	System.out.println(jedis.hgetAll("user"));
    	*/

    	
    	/*******3.列表List(类似于栈???)*********/
    	/*
    	// 放值
    	jedis.lpushx("list", "999");
    	jedis.lpush("list", "hhh","ggg","iii");		//1或多到  开始
    	jedis.rpush("list", "kkk","jjj");			//1或多到  末尾
    	jedis.lpushx("list", "666");				// 插入已存在列表头部
    	// 取值
    	System.out.println(jedis.lrange("list", 0, 10));	//获取指定范围元素
    	System.out.println(jedis.blpop("list","5"));		//移出 第一个元素 等待超时
    	System.out.println(jedis.brpop("list", "5"));		//移出 最后一个元素 等待超时
    	System.out.println(jedis.lindex("list", 3));		//索引获取元素
    	System.out.println(jedis.llen("list"));				//获取列表长度
    	System.out.println(jedis.lrange("list", 0, 10));
    	//清空
    	System.out.println(jedis.flushAll());
    	*/
    	
    	
    	/********4.集合(Set)****************/
    	/*
    	// 放值
    	jedis.sadd("set", "lll", "nnn", "mmm" ,"ooo");
    	// 取值
    	System.out.println(jedis.smembers("set"));		// 所有元素
    	System.out.println(jedis.sismember("set", "ooo"));			// key(value)是否存在
    	System.out.println(jedis.sismember("sett", "ooo"));
    	System.out.println(jedis.srem("set","ooo","mmm"));		// 移除
    	System.out.println(jedis.smembers("set"));
    	// 运算
    	jedis.sadd("set", "set");
    	jedis.sadd("sett", "lll", "nnn", "mmm", "ooo", "sett");
    	System.out.println(jedis.sinter("set", "sett"));		// 交集
    	System.out.println(jedis.sdiff("set", "sett"));			// 差集
    	System.out.println(jedis.sunion("set", "sett"));		// 并集
    	
    	System.out.println(jedis.scard("set"));		// 元素数目
    	System.out.println(jedis.scard("sett"));		// 元素数目
    	//清空
    	System.out.println(jedis.flushAll());
    	*/
    	
    	/********5.有序集合sorted set(zset)*************/
    	HashMap<String,Double> scoremap = new HashMap<String, Double>(); 
    	scoremap.put("vvv", 0.22);
    	scoremap.put("ppp", 0.16);
    	scoremap.put("sss", 0.19);
    	scoremap.put("qqq", 0.17);
    	scoremap.put("www", 0.23);
    	scoremap.put("rrr", 0.18);
    	scoremap.put("uuu", 0.21);
    	scoremap.put("ttt", 0.20);
    	// 放值
    	jedis.zadd("zset", scoremap);		// 添加元素或更新分数
    	jedis.zadd("zset", 0.24, "xxx");
    	// 元素查找修改
    	System.out.println(jedis.zrange("zset", 0, 10));		// 根据索引返回区间
    	System.out.println(jedis.zcount("zset", 0.18, 0.21));		// 根据分数返回元素数
    	System.out.println(jedis.zrem("zset", "sss", "ppp"));		// 移除元素
    	System.out.println(jedis.zcard("zset"));					// 元素数目
    	System.out.println(jedis.zincrby("zset", 1, "www"));		// 分数增量
    	System.out.println(jedis.zscore("zset", "www"));		// 返回分数值
    	System.out.println(jedis.zrank("zset", "www"));		// 返回元素索引
    	System.out.println(jedis.zrangeByScore("zset", 0, 2));		// 根据分数返回元素区间
    	//清空
    	System.out.println(jedis.flushAll());
    	
    	
        jedis.close();
    }
}