redis 补充(2)基本命令及在java中的操作

一、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和json字符串的区别

一般前端传给后端是一个json格式的字符串

猜你喜欢

转载自blog.csdn.net/qq_42306803/article/details/104311831