二:redis 的hash类型相关操作,redishash
=====================二种:hash类型==================介绍:redis -> hash是一个string类型的field和value的映射表
hash特别适合对应存储对象,相较于将对象的每个字段存成单个string类型
将一个对象存储在hash类型中会占用更少的内存,并且可以方便的存取整个对象
0:hset *如果 key(就是hash表) 不存在,一个新的哈希表被创建并进行 HSET 操作
设置hash field为指定值,如果key不存在,则先创建
例子:hset user:001 name leyangjun 会创建表
0.2:hsetnx
设置hash field 为指定值,如果不存在,则创建,如果存在则返回0
例子:hsetnx user:002 name leyangjun
1:hmset:设置多个哈希表的字段值
同时设置hash的多个field
例子:hmset user003 name leyangjun age 23 sex 1 -->对哈希表003设置值成功
hget获取: hget user:003 name -->获取哈希表003 name的值
2:hget
获取指定的hash field值
例子:hget user003 name -->表明 字段
3: hmget
获取全部指定的hash field
例子:hmget user:003 name age sex
4:hincrby (对某个值就行自)
指定的hash field加上给定值
例子:hincrby user:003 age 5 -->给原来age的值 加 5 20+5
5: hexists
测试指定的field是否存在
例子: hexists user:003 sex -->判断hash表字段是否存在
6:hlen
返回指定hash表中所有的field数
例子:hlen user003
7:hdel
删除指定hash表中field的值
例子:hdel user003 age -->删除user003 表中age的字段
8:hkeys
返回hash表中所有的字段
例子:hkeys user003
9:hvals
返回hash表的所有value
例子:hvals user003 -->所有表中key对应的值
10:* hgetall 常用
获取某个hash中全部的field及value
例子:hgetall user003
=========================================END=======================================
此外我还讨论过较常见基于服务器数据存储比 MongoDB 和 CouchDB每数据存储都有其优势和劣势特别当应用于特定领域时 本期 Java 开发 2.0 关注 Redis种轻量级键值对数据存储多数 NoSQL 实现本质上都键值对 Redis 支持非常丰富值集其包括字符串、列表、集及散列因此Redis 通常被称数据结构服务器Redis 也异常快速而闻名使得成某特定类型使用案例优选择 当我们想要了解种新事物时其同熟知事物进行比较能会有所帮助因此我们通过对比其与 memcached 相似性开启 Redis 探索之旅接着我们介绍 Redis 主要功能些功能使其某些应用场景胜过 memcached我向您展示何 Redis 作传统数据存储用于模型对象Redis 和 memcached Memcached 众所周知内存对象缓存系统通过目标键和值导入内存缓存运行因此Memcached 能回避读取磁盘时发生 I/O 成本问题 Web 应用程序和数据库之间粘贴 memcached 时会产生更好读取性能因此对于些需要快速数据查询应用程序Memcached 错选择其例子股票查询服务需要另外访问数据库获取相对静态数据股票名称或价格信息 MemcacheDB Redis 与 memcached 相比较并公平与 MemcacheDB 相比要好多MemcacheDB 分布式键值对存储系统专数据持久化而设计MemcacheDB 与 Redis 较相似其新增优势使其轻松地与 memcached 实现客户端进行通信 memcached 也有其局限性其事实所有值均简单字符串Redis 作 memcached 替代者支持更加丰富功能集些基准 (benchmarks) 也表明 Redis 速度要比 memcached 快多Redis 提供丰富数据类型使其内存存储更复杂数据使用 memcached 无法实现同 memcached 样Redis 持久化其数据 Redis 解决了重大缓存问题而其丰富功能集又其找了其用途由于 Redis 能够磁盘上存储数据及跨节点复制数据因而作数据仓库用于传统数据模式(也说您使用 Redis像使用 RDBMS 样)Redis 还经常被用作队列系统本用例Redis 备份和工作队列持久化存储(利用 Redis 列表类型)基础GitHub 此种方法使用 Redis 大规模基础架构示例准备好 Redis立即开始! 要开始使用 Redis您需要访问通过本地安装或者托管供应商来实现访问您使用 MAC安装过程能简单您使用 Windows??您需要先安装 Cygwin您正寻找托管供应商Redis4You 拥有免费计划管您何种方式访问您都能够根据本文下列示例进行操作我需要指出使用托管供应商进行缓存能并好缓存解决方案因网络延迟能会抵消任何性能优势 您需要通过命令与 Redis 进行交互说里没有 SQL 类查询语言使用 Redis 工作非常类似于使用传统 map 数据结构即所有切都拥有键和值每值都有多种与之关联数据类型每数据类型都有其自己命令集例您计划使用简单数据类型比某种缓存模式您使用命令 set 和 get 您通过命令行 shell 与 Reids 实例进行交互还有多客户端实现编程方式与 Redis 进行交互清单 1 展示了使用基础命令简单命令行 shell 交互:清单1. 使用基础 Redis 命令 redis 127.0.0.1:6379> set page registration OK redis 127.0.0.1:6379> keys * 1) "foo" 2) "page" redis 127.0.0.1:6379> get page "registration" 里我通过 set 命令键 "page" 与值 "registration" 相关联接着我发出 keys 命令(缀 * 表示我想看所有用实例键keys 命令显示有 page 值和 foo我通过 get 命令检索与键关联值请记住使用 get 检索值只能字符串键值列表您必须使用特定列表命令来检索列表元素(注意有查询值类型命令)Java 与 Jedis 集成 对于些想要 Redis 集成 Java 应用程序编程人员Redis 团队建议使用名 Jedis 项目Jedis 轻量级库本地 Redis 命令映射 Java 方法例 Jedis 获取并设置简单值清单 2 所示:清单2. Java 代码基础 Redis 命令 JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost"); Jedis jedis = pool.getResource(); jedis.set("foo", "bar"); String foobar = jedis.get("foo"); assert foobar.equals("bar"); pool.returnResource(jedis); pool.destroy(); 清单 2 我配置了连接池并捕获连接(与您典型 JDBC 场景操作非常相似)我清单底部设置了返回操作连接池逻辑之间我设置了值 "bar" 和键 "foo"我通过 get 命令检索 与memcached 类似Redis 允许您过期(expiration)时间关联值因此我设置了样值(比股票临时交易价格)终从 Redis 缓存清除掉我想 Jedis 设置过期时间需要发出 set 调用之其和过期时间关联清单 3 所示:清单3. Redis 值设置终止 jedis.set("gone", "daddy, gone"); jedis.expire("gone", 10); String there = jedis.get("gone"); assert there.equals("daddy, gone"); Thread.sleep(4500); String notThere = jedis.get("gone"); assert notThere == null; 清单 3 我使用了 expire 调用 "gone" 值设置 10 秒钟内终止调用 Thread.sleep 之"gone" get 调用会返回 nullRedis 数据类型 使用Redis 数据类型比列表和散列需要专用命令用法例我通过键附加值来创建列表
rediskey-value存储系统和Memcached类似支持存储value类型相对更多包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富操作而且些操作都原子性此基础上redis支持各种同方式排序与memcached样了保证效率数据都缓存内存区别redis会周期性把更新数据写入磁盘或者把修改操作写入追加记录文件并且此基础上实现了master-slave(主从)同步
Redis 高性能key-value数据库 redis出现大程度补偿了memcached类key/value存储足部 分场合对关系数据库起好补充作用提供了PythonRubyErlangPHP客户端使用方便
redis提供五种数据类型:stringhashlistset及zset(sorted set)
redis使用了两种文件格式:全量数据和增量请求
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。