0%

redis其它使用

文章字数:503,阅读全文大约需要2分钟

HyperLogLog

用来统计基数个数的算法,优点在于输入元素数量或体积非常大的情况下计算使用的空间总是固定的。
基数:集合中不重复的元素,即去重之后的元素。

  • PFADD key element [element...]添加指定元素到HyperLogLog中
  • PFCOUNT key [key...]返回给定HyperLogLog的基数估算值。
  • PFMERGE destkey sourcekey [sourcekey]将多个HyperLogLog合并成为一个

redis发布与订阅

消息通讯模式,又有两个角色。发送者(pub),订阅者(sub)。一个订阅者可以订阅多个频道。
频道即一个redis

  • PSUBSCRIBE pattern [pattern...]订阅一个或多个符合给定模式的频道
  • PUBSUB <subcommand> [argument [argument ...]]查看订阅与发布系统状态
  • PUBLISH channek message将消息发sing给指定频道。
  • PUNSUBSCRIBE pattern [pattern...]订阅改定的一个或者多个频道
  • SUBSCRIBE channel [channel...]订阅给定的一个或多个频道
  • UNSUBSCRIBE [chnanel [chnanel...]]退订指定的频道

redis事务

redis的弹条命令是原子性的,但是事务并没有原子性的特点。更像是一个命令打包。
过程:开启事务,输入若干命令,执行。
执行过程中不会插入其它命令
执行过程中命令出错不会影响到其它的命令

  • DISCARD 取消事务,放弃执行事务块中的所有命令
  • EXEC执行所有事务块内的命令
  • MULTI标记一个事务块的开始
  • UNWATCH取消WATCH命令对key的监视
  • WATCH key [key...]监视一个或多个key,如果事务执行前这些key有改变,那么事务将被打断

在java中的使用

环境:jedis.jar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import redis.clients.jedis.Jedis;
public class RedisJava {
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("服务正在运行: "+jedis.ping());//PONG
//string
jedis.set("xxx", "asfsf");
// 获取存储的数据并输出
System.out.println("redis 存储的字符串为: "+ jedis.get("xxx"));
//List
//存入
jedis.lpush("site-list", "xcascasc");
// 获取存储的数据并输出
List<String> list = jedis.lrange("site-list", 0 ,2);
//key
Set<String> keys = jedis.keys("*");
Iterator<String> it=keys.iterator() ;
//遍历所有的key
while(it.hasNext()){
String key = it.next();
System.out.println(key);
}
}
}