# 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 秒傳功能