Content

Ruby使用GDBM操作DBM数据存储方法实例详解(rubywoo是什么牌子口红)这样也行?

文章摘要

这篇文章介绍了GDBM( ActiveRecord 背后的数据库驱动库)的主要操作功能,涵盖查询、插入、更新、遍历、筛选、删除、大小判断、转换等核心操作。具体包括: 1. **查询操作**: - `fetch`:根据键获取值,键不存在返回 `nil`。 - `values_at`:获取多个键的值。 - `key`:根据值获取键。 - `keys`、`values`:返回所有键或值。 - `has_key?`、`has_value?`:判断键或值的存在。 2. **更新与插入操作**: - `store`:更新或插入键值对。 - `shift`:移除并返回键值对。 - `delete`:删除键值对,键不存在时插入。 - `delete_if`、`reject`、`reject!`:根据条件删除键值对,其中 `delete_if` 修改GDBM,`reject!` 等价于 `delete_if`。 3. **遍历操作**: - `each_pair`、`each_key`、`each_value`:遍历键值对、键、值。 4. **筛选操作**: - `select`:筛选符合条件的键值对。 5. **大小判断**: - `empty?`、`length`、`db_size`:判断数据库是否为空、返回键值对的数量。 6. **其他操作**: - `invert`:反转键值对。 - `close`、`to_a`、`to_hash`:关闭数据库、转换为数组或哈希。 - `replace`、`update`、`reorganize`:替换或合并数据库内容。 - `sync`、`fastmode`、`cachesize`:配置同步模式、快照大小。 文章内容全面展示了GDBM的主要功能,适合开发者快速了解其操作方法和用法。

######### 查询、插入、更新 ######### [“key”] fetch(key [, default]) → value 检索指定的key。 使用`[]`检索时,如果key不存在将返回nil, 使用fetch检索时,如果key不存在则报错,或者返回指定的默认值 values_at(key, …) → array 检索一个或多个key,并以数组方式返回对应的value [“key”]=value store(key, value) → value 更新指定的key,如果key不存在则插入 ########## 遍历 ######### each_pair { |key, value| block } → gdbm each_key { |key| block } → gdbm each_value { |value| block } → gdbm 分别根据key-value、key、value遍历db ######### 其它检索、筛选方式 ######### key(value) → key 根据value找到其key,如果有多个相同的value,返回第一个 keys → array 以数组方式返回db中所有的key values → array 以数组方式返回所有value select { |key, value| block } → array 筛选所有满足条件的key-value ######### 判断key或value是否存在 ######### has_key?(k) → true or false include?(k) → true or false key?(k) → true or false member?(k) → true or false 判断key是否存在 has_value?(v) → true or false value?(v) → true or false 判断指定的value是否存在 ######### 删除 ######### delete(key) → value or nil 根据key移除key-value并返回被移除的Key-value,db若空,返回nil shift → (key, value) or nil 移除指定的key-value,并以数组方式返回之,db若空,则返回nil delete_if { |key, value| block } → gdbm 移除满足条件(语句块返回true)的key-value,直接修改gdbm reject { |key, value| block } → hash 等价于delete_if,但不修改gdbm,而是以hash的方式返回 reject! { |key, value| block } → gdbm 等价于delete_if,直接修改gdbm clear → gdbm 清空db中所有key-value ######## 大小判断 ######### empty? → true or false db是否为空 length → fixnum size → fixnum 等价,返回db中的key-value数量 ####### 其它操作 ######### invert → hash 反转gdbm中key-value:key作为value,value作为key,并以hash的方式返回 close → nil 关闭已打开的db文件 closed? → true or false 判断db文件是否已关闭 replace(other) → gdbm 将另一个gdbm(即other)的内容覆盖替换到当前的gdbm update(other) → gdbm 用另一个gdbm(即Other)合并到当前gdbm,若key冲突,则当前gdbm的key被覆盖 reorganize → gdbm 重组gdbm cachesize=size → size 设置gdbm内部的hash桶缓存大小 ######## gdbm模式 ######### sync → gdbm 将IO buffer中的数据刷入磁盘中的db文件,全部写入成功才返回 如果以SYNC标记打开,则无需sync() fastmode=boolean → boolean syncmode=boolean → boolean 打开或关闭sync模式。 sync模式下,写入操作需要写入磁盘db文件成功(或失败)后才返回, 非sync模式下,只需写入io buffer即可返回。 syncmode方法在gdbm >=1.8才可用,在此版本之前,使用方法fastmode=######### 转换 ######### to_a → array to_hash → hash 转换为数组、转换为hash