java redis hkeys_Java中Redis的基本使用

1、pom中引入所需jar包

redis.clients

jedis

3.0.1

org.apache.commons

commons-pool2

2.6.2

2、常用命令与方法

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

string:是redis最基本的类型,一个key对应一个value。 string类型是二进制安全的,它可以包含任何数据,如图片或者序列化的对象 ,一个键最大能存储512MB。

hash:是一个string类型的field和value的映射表,适合用于存储对象。

list:是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

Set:无序集合,通过哈希表实现的,添加、删除、查找的复杂度都是O(1)。

Zset(sorted set):是string类型的有序集合。zset和set一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,分数(score)可以重复。

1)连接及持久化操作命令

quit:关闭连接

auth:简单密码认证

help cmd:查看cmd帮助

save:将数据同步保存到磁盘

bgsave:将数据异步保存到磁盘

lastsave:返回上次成功将数据保存到磁盘的Unix时间戳

shundown:将数据同步保存到磁盘,然后关闭服务

2)远程服务控制

info:提供服务器的信息和统计

monitor:实时转储收到的请求

slaveof:改变复制策略设置

config:在运行时配置redis服务器

3)对key的操作

exists(key):判断key是否存在

del(key):删除key

type(key):返回值的类型

keys(pattern):返回符合pattern的所有key

randomKey:随机返回key空间的一个

rename(oldname, newname):重命名key

dbsize:返回当前数据库中key的数量

expire:设定key的活动时间(s)

ttl:获取key的活动时间

select(index):按索引查询

move(key, dbindex):移动当前数据库中的key到dbindex数据库

flushdb:删除当前选择数据库中的所有key

flushall:删除所有数据库中的所有key

4)String相关

set(key, value):设置名称为key的值

get(key):查询名称为key的值

getSet(key, value):给名称为key的string赋予上一次的value

mget(key1, key2,…, key N):查询多个key的值

setnx(key, value):添加string,名称为key,值为value

setex(key, time, value):添加string,名称为key,并设定过期时间

mset(key N, value N):批量设置多个key的值

msetnx(key N, value N):如果所有给定key都不存在时,同时设置一个或多个key-value对

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的值追加value

substr(key, start, end):返回名称为key的value的子串

5)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中的尾元素

rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

6)Set相关

sadd(key, member):向名称为key的set中添加元素

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的一个元素

7)Hash相关

hset(key, field, value):向名称为key的hash中添加元素

hget(key, field):返回名称为key的hash中field对应的value

hmget(key, (fields)):返回名称为key的hash中field i对应的值

hmset(key, (fields)):向名称为key的hash中添加元素

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中所有键对应的值

hgetall(key):返回名称为key的hash中所有的键及其对应的值

3、使用示例

import redis.clients.jedis.*;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Set;

public class RedisClient {

private Jedis jedis; //非切片客户端连接

private JedisPool jedisPool; //非切片连接池

private ShardedJedis shardedJedis; //切片客户端连接

private ShardedJedisPool shardedJedisPool; //切片连接池

private static final String SERVER_HOST = "127.0.0.1";

private static final int SERVER_PORT = 6379;

private static final String ROOT = "master";

public RedisClient() {

// 初始化连接池

initPool();

initShardedPool();

jedis = jedisPool.getResource();

shardedJedis = shardedJedisPool.getResource();

}

/**

* 初始化非切片池

*/

private void initPool() {

// 池配置

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();

jedisPoolConfig.setMaxIdle(5);

jedisPoolConfig.setMaxWaitMillis(1000L);

jedisPoolConfig.setTestOnBorrow(false);

jedisPool = new JedisPool(jedisPoolConfig, SERVER_HOST, SERVER_PORT);

}

/**

* 初始化切片池

*/

private void initShardedPool() {

// 池配置

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();

jedisPoolConfig.setMaxIdle(5);

jedisPoolConfig.setMaxWaitMillis(1000L);

jedisPoolConfig.setTestOnBorrow(false);

// slave配置

List shardInfos = new ArrayList<>();

shardInfos.add(new JedisShardInfo(SERVER_HOST, SERVER_PORT, ROOT));

shardedJedisPool = new ShardedJedisPool(jedisPoolConfig,shardInfos);

}

/**

* Key相关的功能

*/

protected void keyOperate() {

jedis.append("key1", "test"); //追加键key1的值

jedis.del("key1"); //删除键key1

jedis.exists("key1"); //判断key1是否存在

jedis.expire("key1", 5); //设置key1的过期时间为5秒

jedis.set("key1", "abc"); //设置键key1的值

jedis.get("key1"); //获取键key1的值

jedis.type("key1"); //查看键key1的值类型

jedis.ttl("key1"); //查看键key1的剩余生存时间,单位秒,永久生存或不存在的都返回-1

jedis.persist("key1"); //移除键key1的生存时间

jedis.rename("key1", "key2"); //更名键key1为key2

jedis.move("foo", 1); //将当前DB的key移动到指定DB中

//输出所有的KEY

Set keys = jedis.keys("*");

Iterator it = keys.iterator();

while (it.hasNext()) {

System.out.println(it.next());

}

shardedJedis.append("key1", "test"); //追加键key1的值

shardedJedis.del("key1"); //删除键key1

shardedJedis.exists("key1"); //判断key1是否存在

shardedJedis.expire("key1", 5); //设置key1的过期时间为5秒

shardedJedis.set("key1", "abc"); //设置键key1的值

shardedJedis.get("key1"); //获取键key1的值

shardedJedis.type("key1"); //查看键key1的值类型

shardedJedis.ttl("key1"); //查看键key1的剩余生存时间,单位秒,永久生存或不存在的都返回-1

shardedJedis.persist("key1"); //移除键key1的生存时间

shardedJedis.move("foo", 1); //将当前DB的key移动到指定DB中

}

/**

* String相关的功能

*/

protected void stringOperate() {

jedis.set("key1", "value1"); //新增键key1

jedis.set("key1", "value2"); //覆盖键key1

jedis.mset("key1", "value1","key2", "value2","key3", "value3"); //新增多个key

jedis.get("key1"); //获取键key1的值

jedis.mget("key1","key2","key3"); //获取多个key

jedis.del("key1"); //删除键key1

jedis.del("key1","key2","key3"); //删除多个key

shardedJedis.set("key1", "value1"); //新增键key1

shardedJedis.set("key1", "value2"); //覆盖键key1

shardedJedis.get("key1"); //获取键key1的值

shardedJedis.del("key1"); //删除键key1

shardedJedis.setnx("key1", "value1"); //键key1不存在时,新增键key1

shardedJedis.setnx("key1", "value2"); //键key1存在时,尝试新增键key1

shardedJedis.setex("key1", 2, "aaa"); //新增键key1,并指定过期时间为2秒

shardedJedis.getrange("key1",2,4); //获取键key1对应值中指定位置的字符串

}

/**

* List相关的功能

*/

protected void listOperate() {

jedis.lpush("str1","a"); //新增list元素a

jedis.lpush("str1","b"); //新增list元素b

jedis.lrange("str1",0,-1); //输出list所有元素

jedis.lrem("str1",1,"a"); //删除列表指定的值,第二个参数为删除的个数(有重复时)

jedis.ltrim("str1",0,2); //删除区间以外的数据

jedis.lpop("str1"); //列表元素出栈

jedis.lset("str1",0,"abc"); //修改列表中指定下标的值

jedis.llen("str1"); //计算数组长度

jedis.lindex("str1",1); //获取列表指定下标的值

//排序

SortingParams sortingParams = new SortingParams();

sortingParams.alpha();

sortingParams.limit(0,3);

jedis.sort("str1", sortingParams);

shardedJedis.lpush("str1","a"); //新增list元素a

shardedJedis.lpush("str1","b"); //新增list元素b

shardedJedis.lrange("str1",0,-1); //输出list所有元素

shardedJedis.lrem("str1",1,"a"); //删除列表指定的值,第二个参数为删除的个数(有重复时)

shardedJedis.ltrim("str1",0,2); //删除区间以外的数据

shardedJedis.lpop("str1"); //列表元素出栈

shardedJedis.lset("str1",0,"abc"); //修改列表中指定下标的值

shardedJedis.llen("str1"); //计算数组长度

shardedJedis.lindex("str1",1); //获取列表指定下标的值

shardedJedis.sort("str1",sortingParams); //排序

}

/**

* Set相关的功能

*/

protected void setOperate() {

jedis.sadd("set1","a1"); //向set1集合中加入元素a1

jedis.smembers("set1"); //查看set1集合中所有元素

jedis.srem("set1","a2"); //删除set1集合中元素a2

jedis.sismember("set1","a3"); //判断set1集合中是否存在元素a3

//遍历集合set1的所有元素

Set set = jedis.smembers("set1");

Iterator it = set.iterator();

while (it.hasNext()) {

System.out.println(it.next());

}

jedis.sinter("set1","set2"); //获取集合set1和set2的交集

jedis.sunion("set1","set2"); //获取集合set1和set2的并集

jedis.sdiff("set1","set2"); //获取集合set1和set2的差集,set1中有,set2中没有的元素

shardedJedis.sadd("set1","a1"); //向set1集合中加入元素a1

shardedJedis.smembers("set1"); //查看set1集合中所有元素

shardedJedis.srem("set1","a2"); //删除set1集合中元素a2

shardedJedis.sismember("set1","a3"); //判断set1集合中是否存在元素a3

}

/**

* SortSet相关的功能

*/

protected void sortSetOperate() {

jedis.zadd("zset",1.0,"a1"); //向zset中添加元素a1

jedis.zrange("zset",0,-1); //查询zset中所有元素,按权重值排序

jedis.zrange("zset",1,5); //查看zset中下标1到5范围内的元素值

jedis.zrem("zset","a2"); //删除zset中元素a2

jedis.zcard("zset"); //统计zset中元素数量

jedis.zcount("zset",1.0,5.0); //统计zset中权重在某个范围内的元素数

jedis.zscore("zset","a2"); //查看zset中元素a2的权重

shardedJedis.zadd("zset",1.0,"a1"); //向zset中添加元素a1

shardedJedis.zrange("zset",0,-1); //查询zset中所有元素,按权重值排序

shardedJedis.zrange("zset",1,5); //查看zset中下标1到5范围内的元素值

shardedJedis.zrem("zset","a2"); //删除zset中元素a2

shardedJedis.zcard("zset"); //统计zset中元素数量

shardedJedis.zcount("zset",1.0,5.0); //统计zset中权重在某个范围内的元素数

shardedJedis.zscore("zset","a2"); //查看zset中元素a2的权重

}

/**

* hash相关的功能

*/

protected void hashtOperate() {

jedis.hset("hash1","key1","a"); //向hash1中添加键值对key1

jedis.hincrBy("hash1","key2",4L); //新增key2和4的Long型键值对

jedis.hdel("hash1","key2"); //删除hash1中key2键值对

jedis.hexists("hash1","key1"); //判断hash1中是否存在key1

jedis.hget("hash1","key1"); //获取key1的值

jedis.hmget("hash1","key1","key2"); //获取key1和key2对应的值

jedis.hkeys("hash1"); //获取hash1中的所有key

jedis.hvals("hash1"); //获取hash1中的所有值

shardedJedis.hset("hash1","key1","a"); //向hash1中添加键值对key1

shardedJedis.hincrBy("hash1","key2",4L); //新增key2和4的Long型键值对

shardedJedis.hdel("hash1","key2"); //删除hash1中key2键值对

shardedJedis.hexists("hash1","key1"); //判断hash1中是否存在key1

shardedJedis.hget("hash1","key1"); //获取key1的值

shardedJedis.hmget("hash1","key1","key2"); //获取key1和key2对应的值

shardedJedis.hkeys("hash1"); //获取hash1中的所有key

shardedJedis.hvals("hash1"); //获取hash1中的所有值

}

public static void main(String... args) {

RedisClient client = new RedisClient();

client.keyOperate();

client.stringOperate();

client.listOperate();

client.setOperate();

client.sortSetOperate();

client.hashtOperate();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值