# 3.4.2 HASH-字典
在 Memcached 中,我们经常将一些结构化的信息打包成 hashmap,在客户端序列化后存储为一个字符串的值(一般是 JSON 格式),比如用户的昵称、年龄、性别、积分等。这时候在需要修改其中某一项时,通常需要将字符串(JSON)取出来,然后进行反序列化,修改某一项的值,再序列化成字符串(JSON)存储回去。简单修改一个属性就干这么多事情,消耗必定是很大的,也 不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而 Redis 的 Hash 结构可以使你像在数据库中 Update 一个属性一样只修改某一项属性值。
`hset` 设置hash field为指定值,如果key不存在,则先创建。
```bash
> hset myhash field1 Hello
```
`hsetnx` 设置hash field为指定值,如果key不存在,则先创建。如果field已经存在,返回0,nx是not exist的意思。
```bash
> hsetnx myhash field "Hello"
(integer) 1
> hsetnx myhash field "Hello"
(integer) 0
```
第一次执行是成功的,但第二次执行相同的命令失败,原因是field已经存在了。
`hmset` 同时设置hash的多个field。
```bash
> hmset myhash field1 Hello field2 World
> OK
```
`hget` 获取指定的hash field。
```bash
> hget myhash field1
"Hello"
> hget myhash field2
"World"
> hget myhash field3
(nil)
```
由于数据库没有field3,所以取到的是一个空值nil.
`hmget` 获取全部指定的hash filed。
```bash
> hmget myhash field1 field2 field3
1) "Hello"
2) "World"
3) (nil)
```
` hincrby` 指定的hash filed 加上给定值。
```bash
> hset myhash field3 20
(integer) 1
> hget myhash field3
"20"
> hincrby myhash field3 -8
(integer) 12
> hget myhash field3
"12
```
`hexists` 测试指定field是否存在。
```bash
> hexists myhash field1
(integer) 1
> hexists myhash field9
(integer) 0
通过上例可以说明field1存在,但field9是不存在的。
```
`hlen` 返回指定hash的field数量。
```bash
> hlen myhash
(integer) 4
```
`hkeys` 返回hash的所有field。
```bash
> hkeys myhash
> 1) "field2"
> 2) "field"
> 3) "field3"
```
说明这个hash中有3个field。
`hvals` 返回hash的所有value。
```bash
> hvals myhash
1) "World"
2)"Hello"
3)"12"
```
说明这个hash中有3个field。
`hgetall` 获取某个hash中全部的filed及value。
```bash
> hgetall myhash
1) "field2"
2) "World"
3) "field"
4) "Hello"
5) "field3"
6) "12"
```
- 概要
- 1 分布式存储fastDFS
- 1.1 fastDFS 通用介绍
- 1.2 fastDFS安装和使用
- 1.3 基于fastDFS实现分布式
- 2 缓存数据库redis快速搭建
- 2.1 环境安装
- 2.2 redis数据类型
- 2.3 redis订阅发布模式
- 2.4 redis事务
- 2.5 redis备份
- 3 redis详细攻略
- 3.1 redis简介
- 3.2 redis使用场景
- 3.3 redis基本操作
- 3.4 redis数据类型
- 3.4.1 字符串
- 3.4.2 HASH-字典
- 3.4.3 List-列表
- 3.4.4 Set-集合
- 3.4.5 Sorted Set-有序集合
- 3.4.6 订阅-发布
- 3.4.7 事务
- 3.5 redis配置文件
- 3.6 持久化
- 3.7 redis性能测试
- 3.8 redis-C-API
- 3.9 redis-C++-API
- 3.10 总结与建议
- 4 memcache缓存数据库
- 4.1 什么是memcached
- 4.2 memcached的特征
- 4.3 memcached的内存管理
- 4.4 如何使用memcached
- 4.5 memcached参数详解
- 4.6 memcached安装
- 4.7 memcached-C客户端
- 4.8 memcached-C++客户端
- 5 Nginx
- 6 FastCGI
- 6.1 CGI
- 6.2 FastCGI
- 6.3 Nginx与FastCGI
- 7 Nginx上部署fastDFS
- 8 项目概要
- 8.1 上传文件功能
- 8.2 主界面显示与下载文件功能
- 8.3 注册功能
- 8.4 登陆功能
- 8.5 文件分类功能
- 8.6 个人网盘功能
- 8.8 秒传功能