文章摘要
这篇文章介绍了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