Redis五大数据类型——Redis-Hash(哈希)

通过Jedis操作Redis-Hash!

package com.kuang.base;

import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Map;

public class TestHash {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("122.112.207.13", 6379);

        jedis.auth("123456");
        System.out.println("连接成功");
        jedis.flushDB();
        Map<String,String> map = new HashMap<String,String>();
        map.put("key1","value1");
        map.put("key2","value2");
        map.put("key3","value3");
        map.put("key4","value4");
        //添加名称为hash(key)的hash元素
        jedis.hmset("hash",map);
        //向名称为hash的hash中添加key为key5,value为value5元素
        jedis.hset("hash", "key5", "value5");
        System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));//return Map<String,String>
        System.out.println("散列hash的所有键为:"+jedis.hkeys("hash"));//return Set<String>
        System.out.println("散列hash的所有值为:"+jedis.hvals("hash"));//return List<String>
        System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6:"+jedis.hincrBy("hash", "key6", 6));
        System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));
        System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6:"+jedis.hincrBy("hash", "key6", 3));
        System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));
        System.out.println("删除一个或者多个键值对:"+jedis.hdel("hash", "key2"));
        System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));
        System.out.println("散列hash中键值对的个数:"+jedis.hlen("hash"));
        System.out.println("判断hash中是否存在key2:"+jedis.hexists("hash","key2"));
        System.out.println("判断hash中是否存在key3:"+jedis.hexists("hash","key3"));
        System.out.println("获取hash中的值:"+jedis.hmget("hash","key3"));
        System.out.println("获取hash中的值:"+jedis.hmget("hash","key3","key4"));
    }
}

效果图如下:

在这里插入图片描述

Redis-Hash 笔记

Redis 是一个开源(BSD 许可)的内存数据结构存储,用作数据库、缓存、消息代理和流引擎。Redis 提供数据结构,例如 字符串散列列表集合、带范围查询的排序集合、位图超日志地理空间索引。Redis 内置了复制Lua 脚本LRU 驱逐事务和不同级别的磁盘持久性,并通过以下方式提供高可用性Redis 哨兵(Sentinel)Redis Cluster的自动分区。

我们现在讲解的所有命令大家一定要全部记住,后面我们使用SpringBoot、Jedis,所有的方法就是这些命令。

单点登录

Hash(哈希)

Map集合,key-map! 这个值是一个map集合!本质和String类型没有太大区别,还是一个简单的额key-vlaue!

127.0.0.1:6379> hset myhash field1 hello   # set一个具体 key-vlaue
(integer) 1
127.0.0.1:6379> hget myhash field1    # 获取一个字段值
"hello"
127.0.0.1:6379> hmset myhash field1 hello_world field2 wwwjgy   # set 多个 key-vlaue
OK
127.0.0.1:6379> hmget myhash field1 field2     # 获取多个字段值
1) "hello_world"
2) "wwwjgy"
127.0.0.1:6379> hgetall myhash     # 获取全部的数据!
1) "field1"
2) "hello_world"
3) "field2"
4) "wwwjgy"
127.0.0.1:6379> hdel myhash field1   # 删除hash指定key字段!对应的value值也就消失了!
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "field2"
2) "wwwjgy"
################################################################################################
hlen  # 获取hash表的字段数量!

127.0.0.1:6379> hlen myhash       # 获取hash表的字段数量!
(integer) 1
127.0.0.1:6379> hmset myhash field1 hello field2 world
OK
127.0.0.1:6379> hgetall myhash
1) "field2"
2) "world"
3) "field1"
4) "hello"
################################################################################################
127.0.0.1:6379> hexists myhash field1     # 判断hash中指定的字段是否存在!
(integer) 1
127.0.0.1:6379> hexists myhash field13
(integer) 0

################################################################################################
# 只获得所有的field
# 只获得所有的value

127.0.0.1:6379> hkeys myhash      # 只获得所有的field
1) "field2"
2) "field1"
127.0.0.1:6379> hvals myhash	  # 只获得所有的value
1) "world"
2) "hello"
################################################################################################
incr   decr

127.0.0.1:6379> hset myhash field3 5      # 指定增量!
(integer) 1
127.0.0.1:6379> hincrby myhash field3 -1
(integer) 4
127.0.0.1:6379> hincrby myhash field3 1
(integer) 5
127.0.0.1:6379> hsetnx myhash field4 hello 	# 如果不存在则可以设置
(integer) 1
127.0.0.1:6379> hsetnx myhash field4 world  # 如果不存在则不能设置
(integer) 0
################################################################################################
127.0.0.1:6379> hset user:1 name jinguangya
(integer) 1
127.0.0.1:6379> hget user:1 name
"jinguangya"

hash变更的数据 user name age,尤其是用户信息之类的,经常变动的信息!hash更合适于对象的存储,String更加适合于字符串存储!


PS: 感谢b站秦老师(遇见狂神说),这些笔记都是看他免费课程记下的。 大家觉得文档不错的话,那就请去支持一波!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

已转行@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值