从 SSDB 1.6.7 版本开始, 增加了 Key 过期功能, 可以支持 Key 到期自动删除, 这样, SSDB 就可以作为一个持久化的缓存服务来使用. 该功能和 Redis 的 ttl/expire 一样, 使用方法是:
$ssdb->setx('key', 'value', 60);
这段代码表示, 设置 key=value, 同时到 60 秒后, 自动删除 key. 需要注意的是, TTL 只支持 KV 数据结构, hash(map) 和 zset 不支持.
下载 SSDB NoSQL 数据库源码: https://github.com/ideawu/ssdb
$ssdb->setx(‘key1′, ‘value1′, 60); // 10:30:00 十点三十分零秒
// 过了30秒再对同一key执行TTL和value更新 即:10:30:30
$ssdb->setx(‘key1′, ‘value2′, 120);
Key1的TTL会被重置120秒超时吗? 并且value会更新? 谢谢! Reply
1、获取value值,同时将value置0;
2、只能当value等于某值时才对value赋值。
我花了两天看了你的源码,里面似乎是用一个单线程在操作leveldb库,如果能在底层完成这个功能应该不太困难,嘿嘿,希望能得到作者ideawu的回复,谢啦。 Reply
Hi,CAS我指的是Compare & Set操作,我的需求需要这样的功能:
第一种情况,通过key获取value值,同时将value置0,这是一个原子操作
第二种情况,只能当value等于某值时才对value赋值,否则不赋值,这也是一个原子操作
因为我现在已经在项目中运用了你的SSDB,非常稳定,但现在想增加一点新的需求,需要用到上面两个类似功能,但好像目前的接口实现不了,最后花了些时间研究了下你的源码,觉得写的非常的棒,非常感谢你对开源做的贡献。你的架构中加入这样的功能也不太复杂,希望你能把我的建议做个考虑。 Reply
你好,我已经在github上提了issue,希望ssdb做的越来越好。 Reply
1、获取value值,同时将value置0;
2、只能当value等于某值时才对value赋值。 Reply
1. 可以不用设置 tail, head 两个变量, 因为 hash 是按 key 排序的, 第一个元素和最后一个元素是隐含的.
2. 我觉得命令名可以参考 C++ STL queue, 改为 qpush, qpop, qback, qfront, qsize.
3. 用 hash 来实现队列, 这个思路不错! Reply
g++ -o ../ssdb-server ssdb-server.o ssdb.o t_kv.o t_hash.o t_zset.o link.o backend_dump.o backend_sync.o slave.o binlog.o serv.o iterator.o ttl.o util/log.o util/fde.o util/config.o util/bytes.o -pthread "/home/wen130/ssdb-stable-1.6.7/deps/leveldb-1.14.0/libleveldb.a" "/home/wen130/ssdb-stable-1.6.7/deps/snappy-1.1.0/.libs/libsnappy.a" "/home/wen130/ssdb-stable-1.6.7/deps/jemalloc-3.3.1/lib/libjemalloc.a"
g++: error: /home/wen130/ssdb-stable-1.6.7/deps/snappy-1.1.0/.libs/libsnappy.a: No such file or directory
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/wen130/ssdb-stable-1.6.7/src’
make: *** [all] Error 2 Reply
执行:make install PREFIX=/home/ssdb/
显示信息如下
mkdir -p /home/ssdb/
mkdir -p /home/ssdb//_cpy_
mkdir -p /home/ssdb//deps
mkdir -p /home/ssdb//var
mkdir -p /home/ssdb//var_slave
cp ssdb-server ssdb.conf ssdb_slave.conf /home/ssdb/
cp -r api /home/ssdb/
cp -r \
tools/ssdb-bench tools/ssdb-cli \
tools/ssdb-cli.cpy tools/ssdb-dump \
tools/ssdb-repair \
tools/ssdb-startup.sh tools/unittest.php \
/home/ssdb/
cp: cannot stat `tools/ssdb-startup.sh': No such file or directory
make: *** [install] Error 1 Reply