Apache Ignite服务端可以兼容Redis Java客户端协议,可以使用Redis客户端像操作redis一样操作。大多数redis客户端操作支持,部分指令无法兼容。
兼容的操作:
Redis
https://apacheignite.readme.io/docs/redis
测试版本
Apache Ignite V2.13.0
Jredis 版本2.8.0
Maven 代码版本依赖
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>${ignite.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-spring</artifactId>
<version>${ignite.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
此处相当于把Apache Ignite当作Redis服务端使用,ignite需要初始化一个redis-ignite-internal-cache-0缓存,作为默认的存储,该缓存将用作您的默认 Redis 数据库以及您使用 SELECT 命令切换到的其他数据库的模板。
并且绑定6379供redis客户端访问 。
服务端代码
public class RedisMock {
public static void main(String[] args) {
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setPeerClassLoadingEnabled(true);
//设置连接方式
ConnectorConfiguration configuration = new ConnectorConfiguration();
//设置主机和端口号,redis服务端默认绑定6379
configuration.setHost("localhost");
configuration.setPort(6379);
cfg.setConnectorConfiguration(configuration);
//设置缓存
CacheConfiguration cacheConfiguration = new CacheConfiguration();
cacheConfiguration.setName("redis-ignite-internal-cache-0");
cacheConfiguration.setAtomicityMode(CacheAtomicityMode.ATOMIC);
cacheConfiguration.setBackups(1);
cfg.setCacheConfiguration(cacheConfiguration);
// Setting up an IP Finder to ensure the client can locate the servers.
TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder();
ipFinder.setAddresses(Collections.singletonList("127.0.0.1:47500..47509"));
cfg.setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(ipFinder));
// Starting the node
Ignite ignite = Ignition.start(cfg);
while (true) {
//waite
}
}
}
启动服务端代码,会在6379监听客户端请求
客户端代码,使用Redis客户端代码访问ignite,默认访问6379.
public class JedisDemo {
public static void main(String[] args) {
//创建连接redis数据库的对象
// Jedis jedis = new Jedis("localhost", 6379);
//创建连接池对象
//iginit 默认的兼容端口是11211
JedisPool jedisPool = new JedisPool(
new GenericObjectPoolConfig(),
"localhost",
6379, 600000,
null, Protocol.DEFAULT_DATABASE,
null);
//new JedisPool("localhost", 6379);
//通过连接池对象获取连接redis的连接对象
Jedis jedis = jedisPool.getResource();
//测试是否连接
String pong = jedis.ping();
System.out.println("是否连接:" + pong);
//切换数据库
String result = jedis.select(1);
System.out.println("切换数据库:" + result);
// //查看当前数据库中所有键key
// Set<String> keys = jedis.keys("*");
// System.out.println("所有键:" + keys);
//获取键的数量
long keySize = jedis.dbSize();
System.out.println("键的数量:" + keySize);
System.out.println("---string类型---");
//1.string类型
//存储
jedis.set("hello", "welcome to redis");
//获取
System.out.println(jedis.get("hello"));
System.out.println("---list类型---");
}
}
219

被折叠的 条评论
为什么被折叠?



