开发者学堂课程【Go语言核心编程 - 面向对象、文件、单元测试、反射、TCP编程:Redis 中 Hash 的基本使用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9786
Redis 中 Hash 的基本使用
内容介绍
一、哈希的基本介绍
二、哈希基本案例的讲解
一、哈希的基本介绍
哈希是一个人的名字。哈希这个人如此有名是因为他搞了一个哈希算法。哈希类似于 golang 里面的 map 这种结构。刚才所见的字符串是非常简单的。在 redis 里面去保留一个人的信息,如果把分身去掉是不行的。当时在讲 go 语言的时候也是这样讲的,单个数据类型是不行的。Redis 的设计者想一定会有人去描绘一个相对综合的数据,这个时候就搞了一个哈希。哈希是一个键值对的集合,而 map 本质上也是一个键值对的集合。如果 user1 是 map 的名字,那么哈希的名字就是 user1。Redis hash 是一个 string 类型的 field 和 value 的映射表,哈希特别适合用于存储对象,反过来就是特别适合存放结构体。在 golang 里面对象就是用结构体体现出来的,其实以后若是存结构体就可以这样做。
二、哈希基本案例的讲解
举例:存放一个 user 信息:(user1)
user1 name “Smith ”age30 golang “coder”
说明: key:user1 name Smith 和 age30 就是两队 field-value
若是要求在 redis 里面存放一个 user 信息,这个 user 的名字就叫 user1。这个 user 里面有名字为 Smith,它的年龄是30岁,另外假设他的工作为 golang 开发工程师。如果在 golang 里面去定义肯定会选择 map,但也可能选择其他的,或者是放一个结构体。这个时候在 redis 中可以用哈希来保存。首先往里面放这个哈希怎么存呢?它的指令发生变化。前面放字符串的时候用的是 set。如果放哈希这个结构则要 hset。前面的 h 代表的是哈希的意思。现在来演示一下。
127.0.0.1:6379>hset user1 name “Smith”1
127.0.0.1:6379>hset user1 age 301
127.0.0.1:6379>hset user1 job “golang coder”1
127.0.0.1:6379>hget user1 name “Smith”
127.0.0.1:6379>hget user1 age 30
127.0.0.1:6379>hget user1 job “golang coder”
这两对引号可以给也可以不给。这个写完过后回车就可以了。把年龄再写一次。这个 user1 还有一个必要的 value 就是工作岗位,它是 golang 工程师。当然它也可以一次性的写。获取的话这里有一个 hget。比如写一个 user1,取得 user1 里面的名字,一回车 smith 就找到了。如果要取他的年龄,user1 年龄为 age,也取到了是三十岁。可以看到给出一个整数也是无用的,等到它存到 redis 里面就都变成字符串了,它本质都是字符串。Redis 在内存操作上的速度是非常快的,这也是 Redis 非常流行的原因。前三个分别为存放姓名、年龄、工作,后三个就分别是获取姓名、年龄和工作。这说明当把数据存放到 redis 就都变成了字符串。