一、redis的数据结构:
* redis存储的是:key,value格式的数据,
* 其中key都是字符串,
* value有5种不同的数据结构:
* 1) 字符串类型 string
* 2) 哈希类型 hash : map格式
* 3) 列表类型 list : linkedlist格式。支持重复元素
* 4) 集合类型 set : 不允许重复元素
* 5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序
二、具体实现
1、 字符串类型 string
1.1、命令行
#set key value
set username zhangsan
#get key
get username
#del key
del username
1.2、代码
@Test
public void testRedisString(){
Jedis jedis = new Jedis("192.168.244.10",6379);
jedis.set("username","zhangsan");
System.out.println(jedis.get("oy"));
jedis.setex("activecode",20,"huahua");
jedis.close();
}
2、哈希类型 hash
2.1、命令行
#存储:hset key field value
hset myhash username lisi
hset myhash password 123
#获取: hget key field: 获取指定的field对应的值
hget myhash username
* hgetall key:获取所有的field和value
hgetall myhash
#删除: hdel key field
hdel myhash username
2.1、代码
@Test
public void testRedisHash(){
Jedis jedis = new Jedis("192.168.244.10",6379);
jedis.hset("user","username","lisi");
jedis.hset("user","passwd","23");
System.out.println(jedis.hget("user", "username"));
Map<String, String> user = jedis.hgetAll("user");
Set<String> keyset = user.keySet();
for (String key:keyset){
String value = user.get(key);
System.out.println(key + ":" + value);
}
jedis.close();
}
3、列表类型 list
3.1、命令行
#list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
#1. 添加:
#lpush key value: 将元素加入列表左表
#rpush key value:将元素加入列表右边
lpush myList a
lpush myList b
lpush myList a
#2.lrange key start end :范围获取 0 -1取全部
lrange myList 0 -1
lrange myList 0 0#取第一个
* hgetall key:获取所有的field和value
hgetall myhash
#3.删除:
lpop key
rpop key
3.1、代码
@Test
public void testRedisList(){
Jedis jedis = new Jedis("192.168.244.10",6379);
jedis.lpush("mylist","a","b","c");
jedis.rpush("mylist","a","b","c");
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);
String element1 = jedis.lpop("mylist");
System.out.println(element1);
String element2 = jedis.rpop("mylist");
System.out.println(element2);
List<String> mylist2 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist2);
jedis.close();
}
4、集合类型 set
4.1、命令行
集合类型 set : 不允许重复元素
1. 存储:sadd key value
sadd myset a
2. 获取:smembers key:获取set集合中所有元素
smembers myset
3. 删除:srem key value:删除set集合中的某个元素
srem myset a
4.1、代码
@Test
public void testRedisSet(){
Jedis jedis = new Jedis("192.168.244.10",6379);
jedis.sadd("myset","java","php","c++");
Set<String> myset = jedis.smembers("myset");
System.out.println(myset);
jedis.close();
}
5、有序集合类型 sortedset(zset)
5.1、命令行
1. 存储:zadd key score value
zadd mysort 60 zhangsan
zadd mysort 50 lisi
zadd mysort 80 wangwu
2. 获取:zrange key start end [withscores]
zrange mysort 0 -1
3. 删除:zrem key value
zrem mysort lisi
5.1、代码
@Test
public void testRedisZSet(){
Jedis jedis = new Jedis("192.168.244.10",6379);
jedis.zadd("mysortedset",3,"亚瑟");
jedis.zadd("mysortedset",30,"后裔");
jedis.zadd("mysortedset",55,"孙悟空");
Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
System.out.println(mysortedset);
jedis.close();
}
三、通用命令
- keys * : 查询所有的键
- type key : 获取键对应的value的类型
- del key:删除指定的key value