Redis基本命令和java基本操作
Redis基础篇
1.redis的基本命令
(1)连接操作命令
quit:关闭连接(connection)
auth:简单密码认证
help cmd: 查看cmd帮助,例如:help quit(2)持久化
save:将数据同步保存到磁盘
bgsave:将数据异步保存到磁盘
lastsave:返回上次成功将数据保存到磁盘的Unix时戳
shundown:将数据同步保存到磁盘,然后关闭服务(3)远程服务控制
info:提供服务器的信息和统计
monitor:实时转储收到的请求
slaveof:改变复制策略设置
config:在运行时配置Redis服务器(4)对value操作的命令
exists(key):确认一个key是否存在
del(key):删除一个key
type(key):返回值的类型
keys(pattern):返回满足给定pattern的所有key
randomkey:随机返回key空间的一个
keyrename(oldname, newname):重命名key
dbsize:返回当前数据库中key的数目
expire:设定一个key的活动时间(s)
ttl:获得一个key的活动时间
select(index):按索引查询
move(key, dbindex):移动当前数据库中的key到dbindex数据库
flushdb:删除当前选择数据库中的所有key
flushall:删除所有数据库中的所有key(5)String
set(key, value):给数据库中名称为key的string赋予值value
get(key):返回数据库中名称为key的string的value
getset(key, value):给名称为key的string赋予上一次的value
mget(key1, key2,…, key N):返回库中多个string的value
setnx(key, value):添加string,名称为key,值为value
setex(key, time, value):向库中添加string,设定过期时间time
mset(key N, value N):批量设置多个string的值
msetnx(key N, value N):如果所有名称为key i的string都不存在
incr(key):名称为key的string增1操作
incrby(key, integer):名称为key的string增加integer
decr(key):名称为key的string减1操作
decrby(key, integer):名称为key的string减少integer
append(key, value):名称为key的string的值附加value
substr(key, start, end):返回名称为key的string的value的子串(6)List
rpush(key, value):在名称为key的list尾添加一个值为value的元素
lpush(key, value):在名称为key的list头添加一个值为value的 元素
llen(key):返回名称为key的list的长度
lrange(key, start, end):返回名称为key的list中start至end之间的元素
ltrim(key, start, end):截取名称为key的list
lindex(key, index):返回名称为key的list中index位置的元素
lset(key, index, value):给名称为key的list中index位置的元素赋值
lrem(key, count, value):删除count个key的list中值为value的元素
lpop(key):返回并删除名称为key的list中的首元素
rpop(key):返回并删除名称为key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
brpop(key1, key2,… key N, timeout):rpop的block版本。
rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部(7)Set
sadd(key, member):向名称为key的set中添加元素member
srem(key, member) :删除名称为key的set中的元素member
spop(key) :随机返回并删除名称为key的set中一个元素
smove(srckey, dstkey, member) :移到集合元素
scard(key) :返回名称为key的set的基数
sismember(key, member) :member是否是名称为key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
sunion(key1, (keys)) :求并集
sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
sdiff(key1, (keys)) :求差集
sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
smembers(key) :返回名称为key的set的所有元素
srandmember(key) :随机返回名称为key的set的一个元素(8)Hash
hset(key, field, value):向名称为key的hash中添加元素field
hget(key, field):返回名称为key的hash中field对应的value
hmget(key, (fields)):返回名称为key的hash中field i对应的value
hmset(key, (fields)):向名称为key的hash中添加元素field
hincrby(key, field, integer):将名称为key的hash中field的value增加integer
hexists(key, field):名称为key的hash中是否存在键为field的域
hdel(key, field):删除名称为key的hash中键为field的域
hlen(key):返回名称为key的hash中元素个数
hkeys(key):返回名称为key的hash中所有键
hvals(key):返回名称为key的hash中所有键对应的value
hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value2.java对redis的基本操作
2.1 pom.xml
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-pool/commons-pool -->
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.6</version>
</dependency>2.2redisClient
public class RedisClient {
/**
* 所谓的切片,就是客户端可以同时连到多个服务器,如果其中一个服务器挂掉,客户端可以切换到另一服务器,
* 例如nginx做http转发,转发的目标机器有两台.其中一台为主机,另一台为备用机,如果主机挂掉,nginx可以自动转往备用机;
*/
private Jedis jedis;//非切片额客户度连接
private JedisPool jedisPool;//非切片连接池
private ShardedJedis shardedJedis;//切片额客户端连接
private ShardedJedisPool shardedJedisPool;//切片额客户端连接池
public RedisClient(){
InitJedisPool();
InitShardedJedisPool();
jedis = jedisPool.getResource();
shardedJedis = shardedJedisPool.getResource();
}
/**
* 初始化非切片额连接池
* maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
* MaxActive,连接池的最大数据库连接数。设为0表示无限制。
* maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
*/
public void InitJedisPool(){
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(20);
config.setMaxIdle(2);
config.setMaxWait(10001);
config.setTestOnBorrow(false);
jedisPool = new JedisPool(config, "127.0.0.1", 6379);
}
/**
* 初始化切片池
*/
public void InitShardedJedisPool(){
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(20);
config.setMaxIdle(2);
config.setMaxWait(10001);
config.setTestOnBorrow(false);
List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();
list.add(new JedisShardInfo("127.0.0.1", 6379, "master"));
shardedJedisPool = new ShardedJedisPool(config, list);
}
public void show(){
KeyOperate();
jedisPool.returnResource(jedis);
shardedJedisPool.returnResource(shardedJedis);
}
/**
* 对value操作的命令
*/
private void KeyOperate(){
System.out.println("------------key----------------");
System.out.println("清空所有数据:"+jedis.flushDB());
//判断k99是否存在:
Boolean exists = jedis.exists("k99");
System.out.println("k99是否存在:"+exists);
jedis.set("k001", "value001");
String string = jedis.get("k001");
System.out.println("k001 value = "+string);
System.out.println(jedis.type("k001"));
shardedJedis.set("k002", "value002");
System.out.println(shardedJedis.get("k002"));
//系统中所有的键,使用“*”
Set<String> keys = jedis.keys("*");
Iterator<String> iterator = keys.iterator();
while(iterator.hasNext()){
String next = iterator.next();
String value = jedis.get(next);
System.out.println(next+":"+value);
}
//删除一个key
jedis.del("k001");
String k001 = jedis.get("k001");
System.out.println(k001);
//设置key002的过期时间
Long expire = jedis.expire("k002", 10);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("k002剩余存活时间:"+jedis.ttl("k002"));
//移除k002生存时间
jedis.persist("k002");
//永久生存或者不存在的都返回-1
System.out.println("k002剩余存活时间:"+jedis.ttl("k002"));
}
public static void main(String[] args) {
new RedisClient().show();
}
}
文章标题:Redis基本命令和java基本操作
发布时间:2019-11-11, 10:01:24
最后更新:2019-11-13, 15:16:09