转载:https://www.cnblogs.com/leskang/p/7840603.html
这里只记录我用到的命令,并没有实际操作每个命令
public class JedisTest_csdn {
public static void test(){
//创建Jedis对象,需要指定连接和端口
Jedis jedis = new Jedis("127.0.0.1", 6379);
// string操作:
jedis.set("key1", "value1");
System.out.println("string操作:" + jedis.get("key1"));
// list操作, rpush, push, lpop, rpop
jedis.rpush("list1", "a", "b", "c");
System.out.println("list1:" + jedis.lrange("list1", 0, -1));
System.out.println("lpop:" + jedis.lpop("list1"));
System.out.println("list1:" + jedis.lrange("list1", 0, -1));
System.out.println("rpop:" + jedis.rpop("list1"));
System.out.println("list1:" + jedis.lrange("list1", 0, -1));
}
public static void main(String[] args) {
test();
}
}
result:
string操作:value1
list1:[a, b, c]
lpop:a
list1:[b, c]
rpop:c
list1:[b]
还有其他的命令,比如hash, 命令是普通命令+"h"开头,:
比如,jedis.set(key, value)
变为:jedis.hset(key, value)
Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池:
https://blog.csdn.net/qq_26525215/article/details/60466222
里面有简单的代码
缓存击穿,缓存雪崩
https://www.bilibili.com/video/BV1CT4y1g7rd
一个80分钟的视频公开课,对缓存穿透以及布隆过滤讲的比较清楚,
redis在一定程度上,充当数据库的缓存
打开一个cmd,运行server端:redis-server.exe
再打开一个cmd,运行客户端:redis-cli.exe -h 127.0.0.1 -p 6379
然后在客户端下执行命令:
set name ‘jack’
get name
Thrift是一个客户端和服务端的架构体系,数据通过socket传输;
具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports);
from thrift.transport import TTransport,TSocket,THttpClient,TZlibTransport
from thrift.protocol import TBase, fastbinary, TBinaryProtocol, TCompactProtocol, TJSONProtocol, TProtocol,TProtocolDecorator
报错:thrift.transport.TTransport.TTransportException: TSocket read 0 bytes
刚开始的代码:
from thrift.transport import TSocket, TTransport
from thrift.protocol import TBinaryProtocol, TCompactProtocol
#server端地址和端口,web是HMaster也就是thriftServer主机名,thriftServer默认端口是9090
socket = TSocket.TSocket('xx.xx.xx.xx', xxxx)
#设置传输方式(TFramedTransport或TBufferedTransport)
transport = TTransport.TBufferedTransport(socket)
#设置传输协议,缺省简单的二进制序列化协议
protocol = TBinaryProtocol.TBinaryProtocol(transport)
报错:thrift.transport.TTransport.TTransportException: TSocket read 0 bytes
改正后:
transport = TTransport.TFramedTransport(socket)
#设置传输协议,缺省高效的二进制序列化协议
protocol = TCompactProtocol.TCompactProtocol(transport)
client = Hbase.Client(protocol)
transport.open()
print(client.getTableNames())
原因是:是因为thrift 的server端和client端的协议不匹配造成的,而server端的thrift采用的是framed+compact模式。
可能是下面的配置:
hbase.regionserver.thrift.compact=True
hbase.regionserver.thrift.framed=True