命令参考:
教程:
1.准备.下载jar 包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
java 客户端还有: Redis4j , jedis , jRedis ,
2. 示例
package redisDemo;
import redis.clients.jedis.Jedis;
public class Test1 {
public static void main(String[] args) {
//连接
Jedis jedis = new Jedis( "127.0.0.1",6379);
//存值
jedis.set( "foo", "bar");
//取值
String foo = jedis.get( "foo");
//删除
jedis.del( "foo");
}
}
1. Jeids 连接
1. 简单连接
Jedis jedis = new Jedis( "127.0.0.1",6379);
2. 使用连接池连接 redis( 依赖 apache 下的 common-pool2.jar包)
// 读取配置文件,redis.properties(如:redisDemo.redis这样表示在redisDemo包下)
ResourceBundle bundle = ResourceBundle.getBundle("redis" );
// 设置配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer. valueOf(bundle.getString("redis.pool.maxActive")));
config.setMaxIdle(Integer. valueOf(bundle.getString("redis.pool.maxIdle")));
config.setMaxWaitMillis(Long. valueOf(bundle.getString("redis.pool.maxWait")));
config.setTestOnBorrow(Boolean. valueOf(bundle.getString("redis.pool.testOnBorrow")));
config.setTestOnReturn(Boolean. valueOf(bundle.getString("redis.pool.testOnReturn")));
// 创建连接池
JedisPool jedisPool = new JedisPool( config, bundle.getString( "redis.ip"),
Integer. valueOf(bundle.getString("redis.port")));
// 从连接池中取得对象
Jedis jedis = jedisPool .getResource();
jedis.get( "foo");
// 释放对象
jedis.close();
3. 创建共享连接,让多台redis同步
//准备两个共享的 redis服务器
JedisShardInfo jedisShardInfo1 = new JedisShardInfo( "192.168.0.1",6379);
JedisShardInfo jedisShardInfo2 = new JedisShardInfo( "192.168.0.2",6379);
List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();
list.add( jedisShardInfo1);
list.add( jedisShardInfo2);
JedisPoolConfig config = new JedisPoolConfig();
// config.set....
//创建共享池
ShardedJedisPool shardedPool = new ShardedJedisPool( config, list);
//创建共享对象
ShardedJedis jedis = shardedPool.getResource();
//crud ....
2.存值
1. 单值保存
jedis.set("foo","bar");
2. 内容追加
jedis.append("foo", "appendValue");
3. 多值保存
/**
* mset 相当于
* jedis.set("name","minxr");
* jedis.set("jarorwar","闵晓荣");
*/
jedis.mset( "name", "minxr", "jarorwar", "闵晓荣");
System.out.println(jedis.mget("name","jarorwar"));
4. 保存map
Map<String, String> user = new HashMap<>();
user.put( "name", "mary");
user.put( "age", "35");
jedis.hmset( "mary", user);
5. 保存 list
//先向list中存放二条数据
jedis.lpush("list","spring");
jedis.lpush("list","struts");
6. 保存set
//保存值【minxr,jarorwar】到set中,key 为【sname】
jedis.sadd("sname","minxr");
jedis.sadd("sname","jarorwar");
3.取值
1. 取出单个值
String foo = jedis.get( "foo");
2.取出多个值以list返回
jedis.mget( "name","jarorwar" )
3.从map中取值
jedis.hmget("mary" , "age" ,"name" ) 以list返回
jedis.hlen("user") 计算map中存值的个数
jedis.exists("user" ); 是否存在该值
jedis.hkeys("user") 返回map对象中所有的key
jedis.hvals("user") 返回map对象中所有的value
4.从list中取值
//第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
jedis.lrange("list",0,-1)
5.从set中取值
//获取所有加入的value
jedis.smembers("set")
//判断minxr是否是sname集合的元素
jedis.sismember("set", "minxr")
//随机获取两个集合元素
jedis.srandmember("set",2)
//返回集合的元素个数
jedis.scard("sname")
6.通过通配符取得
返回当前库中所有的key
jedis.keys("*") 或 jedis.keys("*name")
4.删除
1.删除单值
删除key为foo的对象,删除成功返回1 删除失败(或者不存在)返回 0
jedis.del( "foo");
2.从map中删除
//在"user"中的删除key为 pwd的对象
jedis.hdel( "user", "pwd");
3.从 set中删除
jedis.srem("set","minxr");
4.从list中删除
//根据参数 count 的值,移除列表中与参数 value 相等的元素。
jedis.lrem(key, count, value)
5.持久化与生存时间
//通过此方法,可以指定key的存活(有效时间) 时间为秒,下例设置:【timekey】的值为【min】且有效时间为<=10秒
jedis.setex("timekey", 10, "min");
//返回给定key的有效时间,如果是-1则表示永远有效
jedis.ttl("timekey ")
//以毫秒为单位获取剩余时间的到期键
jedis.pttl( "time");
//在不删除key的情况下,移除key的生存时间,让key重新成功一个【持久的】key
jedis.persist( "persistKey");
//时间是在Unix时间戳格式
jedis.expireAt( "unixTime", 1000L);
//设置【limitKey】的生存时间为10秒。或重新设定【limitKey】的生存时间为10秒
jedis.expire( "limitKey", 10);
6.订阅发布
订阅
【rchat】就是订阅的频道,可以指定多个,当运行了下面的程序后,就开启了一个线程并始终监听着指定的频道
jedis.subscribe(new JedisPubSub() {
public void onMessage(String channel, String message) {
System. out.println( message);
}
}, "rchat" );
发布
//返回值表示订阅的人数,0表示没有人订阅
jedis.publish( "rchat", "hello my name is jack");
控制台
hello my name is jack
7.备份
//备份当前数据,生成一个.rdb的文件
jedis.configGet( "dir");
jedis.bgsave();
8.恢复
要恢复Redis的数据只需移动 Redis 的备份文件(dump.rdb)到 Redis 目录,然后启动服务器
//为了得到你的 Redis 目录,使用配置命令
jedis.configGet( "dir");
9.安全
为reids 设置密码,让相关的任何客户端都需要在执行命令之前进行身份验证
//默认情况下,此属性为空,表示没有设置密码
jedis.configGet( "requirepass");
//设置密码
jedis.configSet( "requirepass", "123456");
//设置密码,如果客户端运行命令没有验证,会提示(错误)NOAUTH,需要通过验证,通过下面取得权限
jedis.auth( "123456");
10.其它操作
//重命名key
jedis.rename("timekey","time")
//移动键到另一个数据库
jedis.move( "user", 1);
//返回存储在键的数据类型的值
jedis.type( "key");