首页 文章 精选 留言 我的

精选列表

搜索[高可用],共10009篇文章
优秀的个人博客,低调大师

高可用Redis(三):Hash类型

1.哈希类型键值结构 哈希类型也是key-value结构,key是字符串类型,其value分为两个部分:field和value 其中field部分代表属性,value代表属性对应的值 上面的图里,user:1:info为key,name,age,Date为user这个key的一些属性,value是属性对应的值 在hash中,可以为key添加一个新的属性和新的值 比如使用下面的命令向user:1:info这个key添加一个新属性viewCounter,属性对应的值为100 hset user:1:info viewCounter 100 2.特点 key-value结构 key(field)不能相同,value可以相同 3.Redis哈希类型对应的命令 3.1 hget命令,hset命令和hdel命令 hget key field 获取hash key对应的field的value hset key field value 设置hash key对应的field的value hdel key field 删除hash key对应的field的value 例子: 127.0.0.1:6379> hset user:1:info age 23 (integer) 1 127.0.0.1:6379> hget user:1:info age "23" 127.0.0.1:6379> hset user:1:info name python (integer) 1 127.0.0.1:6379> hgetall user:1:info 1) "age" 2) "23" 3) "name" 4) "python" 127.0.0.1:6379> hdel user:1:info age (integer) 1 127.0.0.1:6379> hgetall user:1:info 1) "name" 2) "python" 127.0.0.1:6379> 注意事项: hget命令,hset命令和hdel命令的时间复杂度为O(1) 3.2 hexists命令和hlen命令 hexists key field 判断hash key是否有field hlen key 获取hash key field的数量 例子: 127.0.0.1:6379> hgetall user:1:info 1) "name" 2) "python" 3) "age" 4) "23" 127.0.0.1:6379> hexists user:1:info name (integer) 1 127.0.0.1:6379> hlen user:1:info (integer) 2 注意事项: hexists命令和hlen命令的时间复杂度为O(1) 3.3 hmget命令和hmset命令 hmget key field1 field2 ... fieldN 批量获取hash key的一批field对应的值 hmset key field1 value1 field2 value2 ... fieldN valueN 批量设置hash key的一批field value 例子: 127.0.0.1:6379> hmset user:2:info age 30 name mysql page 50 OK 127.0.0.1:6379> hlen user:2:info (integer) 3 127.0.0.1:6379> hmget user:2:info age name 1) "30" 2) "mysql" 127.0.0.1:6379> 注意事项: hmget命令和hmset命令的时间复杂度为O(1) 3.4 hgetall命令,hvals命令和hkeys命令 hgetall key 返回hash key对应所有的field和value hvals key 返回hash key对应所有field的value hkeys key 返回hash key对应所有field 例子: 127.0.0.1:6379> hgetall user:2:info 1) "age" 2) "30" 3) "name" 4) "mysql" 5) "page" 6) "50" 127.0.0.1:6379> hvals user:2:info 1) "30" 2) "mysql" 3) "50" 127.0.0.1:6379> hkeys user:2:info 1) "age" 2) "name" 3) "page" 注意事项: hgetall命令,hvals命令和hkeys命令的时间复杂度为O(1) 由于Redis的单线程的特点以及hgetall会返回所有的key和value,所以如果hash中存储的数据过多时,hgetall命令的执行速度会比较慢 3.5 hsetnx命令,hincrby命令和hincrbyfloat命令 hsetnx key field value 设置hash key对应field的value(如field已经存在,则失败) hincrby key field intCounter hash key对应的field的value自增intCounter hincrbyfloat key field floatCounter hincrby浮点数版 注意事项: hsetnx命令,hincrby命令和hincrbyfloat命令的时间复杂度为O(1) 4.实战 记录网站每个用户个人主页的访问量,也可以使用哈希类型 这样可以保证每个用户的相关数据是一个整体,而使用字符串类型保存的话,则每个用户个人主面的访问量与每个用户的其他数据都是一个分离的状态。 记录网站每个用户个人主页的访问量需要根据实际情况来进行设计使用 hincrby user:1:info pageview count 5.使用Redis保存每个用户相关的数据,可以使用三种方式 5.1 方式一 使用用户的id为key,把用户的相关数据进行序列化后并做为value 使用时,根据用户id获取对应的数据的字符串格式,进行反序列化后就可以得到用户相关的数据进行查询和更新操作 5.2 方式二 使用用户的id与用户对应的属性名进行拼接得到新的字符串,并做为key,用户对应属性的值做为value 这样,用户的所有信息都是分离开的,可以很方便的对用户的数据进行查询和更新,并且可以很方便的为用户添加新的属性,而不用对原来的属性有影响 5.3 方式三 使用用户id做为key,用户的其他数据都保存为hash格式, 对用户的属性进行查询,更新和添加都比较方便 保存用户相关数据的方式比较

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册