/**
* jedis.del("method"); DEL方法可清空所有数据类型
* @author johnzhang
* 常用方法:
* String: 字符
* 1.set 赋值 jedis.set("key","value");返回值 ok
* 2.get 取值 jedis.get("key");如果存在返回值 否则null
* 3.append 在原数据后添加内容 jedis.apped("testvalue");获取总值的长度 (str + testvalue = strtestvalue)
* 4.setex 设置时间 在对应的时间内销毁内容 jedis.apped("key",(秒数),"keyValue") 返回值ok
* 5.setnx 当前值不存在时赋值 jedis.setnx("key","value"); 当前key不存在时进行存储 返回0 / 1
* 7.incr 在原来的内容加数字 1 如果非数字执行该方法时报错 jedis.incr("key"); 返回增加后的值 内容必须为 int 1 2 3
* 8.decr 在原来的内容上 -1 如果是非数字执行该方法报错 jedis.decr("key"); 返回减去后的值 内容同上
* 9.incrBy 在原来的内容上增加指定值 jedis.incrBy("key",新增的位数) 返回key的值
* 10.decrBy 在原来的内容上减去指定值 jedis.decrBy("key",减去的位数) 返回key的值
* 11.mset 创建多个变量 jedis.mset("k1","value1","k2","value2") 返回Ok
* List: 列表
* 1.lpush 从左进行赋值 jedis.lpush("lis", "str2");返回数组条数
* 2.rpush 从右进行赋值 jedis.rpush("lis", "str2");返回数组条数
* 3.del 清空 jedis.del("lis"); 清空 返回 1
* 4.lpushx 当前key存在时进行存储从左开始 jedis.lpushx("lis", "str2");返回数组条数
* 5.rpushx 当前key存在是进行存储从右开始 jedis.rpushx("lis", "str2");返回数组条数
* 6.rpoplpush 删除左边一个添加到另一个集合内 jedis.rpoplpush("lis", "lis2");移除lis 第一个 并返回移除的字符
* 7.llen 获取集合的长度 jedis.llen("lis");//返回 字符长度
* 8.lset 设置集合指定下标下的内容 下标从0 开始 jedis.lset("lis", 0, "value"); ok
* 9.lrem 删除指定 jedis.lrem("lis", 删除的数量, "str1");0删除全部
* 10.Ltrim 获取指定key 内的下标范围值 jedis.ltrim("lis", 0, 0);从左开始截取
* 11.linsert 在列表中添加内容 jedis.linsert("lis", LIST_POSITION.BEFORE, "在那添加 value", "添加什么值");/LIST_POSITION常量
* 12.lrange 获取范围内的数据 jedis.lrange("lis", 0, endLen)
* 13.brpop 在指定时间内返回 key集合的随机值 jedis.brpop(3, "p1");如果有 返回key Value 否则返回【】 并删除集合内的数据
* 14.rpop 移除右边第一个值 jedis.rpop("p1");//返回移除的value
15.blpop 获取到值获者到达指定时间才停止操作 jedis.blpop(100, "l2");返回 key - value
16.brpop 获取到值获者到达指定时间才停止操作 jedis.brpop(100, "l2");返回key - value
17.lindex 获取指定下标的value jedis.lindex("key",索引)
18.linsert 在值之前或之后增加信息 jedis.linsert("k2", LIST_POSITION.BEFORE, "v1", "v0")//在k2列表中 v1的数据之前增加 v0
19.
* Hash: 散列
* 1.hset 赋值 jedis.hset(key)返回新增条数
* 2.hget 取值 jedis.hget("key", "coloum");//返回value
* 3.hgetall 获取所有值 jedis.hgetAll(key);返回所有
* 4.hexists 判断值是否存在 jedis.hexists(key,coloum) 返回结果是否存在 true/false
* 5.hincuBy 在原值上增加指定值 jedis.hincrBy(key,coloum) 返回增加后的数据
* 6.hdel 删除值 jedis.hdel(key,coloum) 返回删除条数
* 7.hkeys 获取所有key jedis.hkeys(key) 返回所有key
* 8.hvals 获取所有value jedis.hvals(key) 返回所有value
* 9.hlen 获取条数 jedis.hlen(key); 返回条数
* Set: 集合
* 1.sset 设置值 jedis
* 1.sadd 增加数据 jedis.sadd("key", "value");返回新增条数
* 2.srem 删除数据 jedis.srem("key", "value");删除指定Value 返回删除个数
* 3.smembers 获取Set集合内所有数据 jedis.smembers("key"); 返回set内所有数据
* 4.sismember 判断Set集合是否存在值 jedis.sismember("key","value");// true/false 是否存在
* 5.sdiff 返回 集合 1 有 集合 2 没有的数据 jedis.sdiff("key1","key2"); key1 :{1,2,3} key2:{2,3} 返回 1
* 6.sinter 获取 seta 123 set setb 23 setc3 得到值3 jedis.sinter("key1","key2","key3"); key1 {1,2} key2{2,3},key3{2} 返回2
* 7.sunion 获取唯一的 jedis.sunion("key1","key2","key3"); key1 {1,2} key2{2,3},key3{3,4} 返回 1 2 3 4
* 8.scard 返回set集合内的个数 jedis.scard("key1");//返回个数
* 9.sdiffstore 返回插入条数 jedis.sdiffstore("key1", "key2","key3")查询 key2 有 key3 没有的值插入到 key1的set集合内
* 10.srandmember 随机获取set集合内的值 jedis.srandmember("key1"); 返回value 1个 构造方法后增加count 指定返回的个数
* 11.spop 删除并返回弹出的信息 jedis.spop("key",count); 指定要弹出内容的key count指定弹出的条数
* Zst: 有序集合
* 1.zadd 增加数据 jedis.zadd("key1",分值,"coloumName");
* 2.zscore 获取数据 jedis.zscore("key1","列明"); 返回值 单精度
* 3.zrange 获取指定范围的值 jedis.zrange("key1",开始分值,结束分值); 返回符合数据的分值
* 4.zrangeByScore 获取指定范围的值 同上 但 分值 为flot 开始和结束 为1.0等
* 5.zincrby 指定 name新增几个值分值类型flot jedis.zincyby("key1",增加几个,加到哪); 返回值1 / 0
* 6.zcard 获取set集合内的个数 jedis.zcard("key1") 返回个数
* 7.zrem 移除指定 coloum jedis.zrem("z1", "name");//返回 0 / 1
* 8.zremrangeByScore 移除分值范围内的值 jedis.zremrangeByScore("key1",0,60);//移除分值为 0 - 60 的值 包括 60
* 9.zrank 获取排名从小到大 jedis.zrank("z1","coloum");//返回排名 1 2 3 4 1 的排名为 0
*
其他方法:
keys * 查询所有key jedis.keys("*");
type key 查询类型 jedis.type("str")
* Redis:事务管理
* cmd Java 作用
* 1.multi 开启事务 jedis.multi();//开启事务 开启事务
* 2.exec 提交事务 jedis.multi().exec();//提交事务 提交事务
* 3.watch 锁定值/监控 jedis.watch("str"); 锁定值 在事务范围内不允许修改 例如在cmd中执行锁定开启事务修改值 在执行exec之前 又在 java中执行了hset 那么执行 exec会抛出
* 4.unwatch 取消锁定/取消监控 jedis.unwatch(); 取消监控
* 5.discard 取消事务 jedis.multi().discard() 不执行方法之后的代码事务
*
* Redis:数据备份
* cmd 作用 Java
* save/bgsave 生成dump.rdb 文件 jedis.save();/jedis.bgsave() ok
* CONFIG get requirepass 判断是否需要密码
* auth password 输入登录密码 jedis.auth(password);
* EXPIRE/PEXPIRE 设置过期时间 jedis.expire("key", 时间单位秒);jedis.PEXPIRE("key",时间单位毫秒);
* TTL 检查还有多长时间失效 jedis.ttl("key");
* Sort 排序 jedis.sort("key"); 排序字母的话 jedis.sort("p1",new SortingParams().alpha())
* 订阅-发布:
* 订阅:SUBSCRIBE / subscribe
* (1)Subscribe。表示订阅成功的反馈信息。第二个值是订阅成功的频道名称,第三个值是当前客户端订阅的频道数量。
* (2)message。这个类型的回复是我们最关心的,它表示接收到的消息。第二个值表示产生消息的频道名称,第三个值是消息的内容。
* (3)unsubscribe。表示成功取消订阅某个频道。第二个值是对应的频道名称,第三个值是当前客户端订阅的频道数量,当此值为0时客户端会退出订阅状态,之后就可以执行其他非“发布/订阅”模式的命令了。
* (4)PSUBSCRIBE命令订阅指定的规则channel.?*可以匹配channel.1和channel.10,但不会匹配channel.。
* 操作步骤
* 1、先订阅再发布
* 1. 订阅语法:subscribe name(这个Name是随机的)
* 2. 发布语法:publisch name(这个Name是随机的) 发布的信息
* Jedis发布信息 先订阅
* JedisPubSub jedisPubSub = new JedisPubSub() {
* @Override
* public void onMessage(String channel, String message) {
* System.out.println(channel);
* System.out.println(message);
* }
* };
* jedis.subscribe(jedisPubSub, "channel1");
*
* 提交多个操作并不需要返回
* Pipeline p = jedis.pipelined();
* xxxx
* p.sync;
*/