一、java中操作redis
1.1 通过jedis
package jedistest.demo.JedisTest;
import redis.clients.jedis.Jedis;
public class JedisTest1 {
public static void main(String[] args) {
String ip = "127.0.0.1";
int port = 6379;
Jedis jedis = new Jedis(ip,port);
jedis.auth("12345678");
jedis.set("name","hahah");
System.out.println(jedis.get("name"));
System.out.println(jedis.ping());
jedis.close();
}
}
1.2 通过jedisPool来获取jedis对象
public class JedisTest1 {
public static void main(String[] args) {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
String host = "127.0.0.1";
int port = 6379;
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port);
Jedis resource = jedisPool.getResource();
resource.auth("12345678");
System.out.println(resource.ping());
resource.close();
}
}
1.3 通过RedisTemplate进行操作
- 需要添加的依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.2.4.RELEASE</version>
</dependency>
- 配置xml
- 进行测试
二、list基本命令
2.1 BLPOP key1 [key2 ] timeout
移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
第一个元素代表key所属的队列
127.0.0.1:6379> blpop list1 10
1) "list1"
2) "l2"
2.2 BRPOP key1 [key2 ] timeout
移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
第二个参数是超时时间,即等待的时间,时间过后,仍没有元素弹出,则返回nil
2.3 LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者后插入元素
127.0.0.1:6379> linsert list1 before 12 11
(integer) 4
2.4 LLEN key
获取列表的长度
127.0.0.1:6379> llen list1
(integer) 4
2.5 lpop
从列表左边弹出一个元素
2.6 Lpushx
将一个值插入到已存在的列表头部,列表不存在时操作无效。
2.7 Lrange
返回指定区间的元素
127.0.0.1:6379> lrange list1 0 3
1) "11"
2) "12"
3) "l1"
4) "r1"
2.8 Lrem
移除列表中与条件符合的元素
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
127.0.0.1:6379> lrem list1 1 11
(integer) 1
2.9 lset
根据索引设置列表中的值
2.10 LTRIM key start stop
保留列表中符合区间的元素
三、集合相关的命令
3.1 集合的相关特性
-
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
-
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
3.2 SADD key member1 [member2]
向集合中添加元素
127.0.0.1:6379> sadd set1 1
(integer) 1
3.3 SCARD key
获取集合的成员数
127.0.0.1:6379> scard set1
(integer) 2
3.3 sdiff
求集合之间的差值
3.4 sinter
求集合的交集
3.5 SMEMBERS
返回集合中的所有成员
127.0.0.1:6379> smembers set1
1) "1"
2) "12"
3.6 SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合
3.7 SPOP key
移除并返回集合中的一个随机元素
3.8 SRANDMEMBER key [count]
返回集合中一个或多个随机数
3.9 SREM key member1 [member2]
移除集合中一个或多个成员
3.10 SUNION key1 [key2]
返回所有给定集合的并集
3.11 SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素
127.0.0.1:6379> sscan set1 0 match 1*
1) "0"
2) 1) "1"
2) "12"
3) "13"
4) "14"
四、zset
4.1 概述
Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
4.2 zadd
127.0.0.1:6379> zadd zset1 1 value1
(integer) 1
4.3 ZCARD key
获取有序集合的成员数
127.0.0.1:6379> zcard zset1
(integer) 2
4.4 ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment
4.5 REM key member [member …]
移除有序集合中的一个或多个成员
4.6 ZSCORE key member
返回有序集中,成员的分数值
4.7 参考
菜鸟教程
五、json格式和其他格式的转换
5.1 依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
5.2 JSONObject对象
JSONObject对应json对象
5.3 JSONArray对象
JSONArray代表json对象数组
5.4 JSON对象
- toJSONString()方法
实现json对象转化为json字符串和javabean对象转化为json 字符串 - parseObject()方法
实现json字符串转换为json对象或javabean对象 - JSONArray()方法
实现json字符串转化为json对象数组或List - toJSON()
实现javabean对象转化为json对象 - toJavaObject()方法
实现json对象转化为javabean对象
5.5 测试
public class JsonTest {
public static void main(String[] args) {
String stu1 = JSON.toJSONString(new Stu("ybx", 23));
System.out.println("javaBean对象转换为Json对象" + stu1);
Stu stu = JSON.parseObject(stu1,Stu.class);
System.out.println("Json对象转换为JavaBean对象" + stu);
System.out.println("Json对象" + JSON.toJSON(new Stu("ybx", 12)));
System.out.println("Json字符串转换为Json对象" + JSON.parseObject(stu1));
}
}
结果:
javaBean对象转换为Json对象{"age":23,"name":"ybx"}
Json对象转换为JavaBean对象Stu{name='ybx', age=23}
Json对象{"name":"ybx","age":12}
Json字符串转换为Json对象{"name":"ybx","age":23}
5.6 json和json字符串的区别
一般前端传给后端是一个json格式的字符串