这篇文章主要介绍了sled怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇sled怎么使用文章都会有所收获,下面我们一起来看看吧。
简介
sled = "0.32"
打开数据库let tree = sled::open("/tmp/welcome-to-sled").expect("open");// 插入KV,读取Key对应的值tree.insert("KEY1", "VAL1");assert_eq!(tree.get(&"KEY1"), Ok(Some(sled::IVec::from("VAL1"))));// 范围查询for kv in tree.range("KEY1".."KEY9") { ...}// 删除tree.remove(&"KEY1");// atomic compare and swap,可以用在并发编程中tree.compare_and_swap("KEY1", Some("VAL1"), Some("VAL2"));// 阻塞直到所有修改都写入硬盘tree.flush();AI代码助手复制代码
use { byteorder::{BigEndian, LittleEndian}, zerocopy::{ byteorder::U64, AsBytes, FromBytes, LayoutVerified, Unaligned, },};// 键结构体// zerocopy::byteorder::U64保证了数据对齐问题#[derive(FromBytes, AsBytes, Unaligned)]#[repr(C)]struct Key { a: U64<BigEndian>, b: U64<BigEndian>,}// 值结构体#[derive(FromBytes, AsBytes, Unaligned)]#[repr(C)]struct Value { count: U64<LittleEndian>, whatever: [u8; 16],}let key = Key { a: U64::new(21), b: U64::new(890) };// 取得键所对应的值,并对其施加给定函数灿做db.update_and_fetch(key.as_bytes(), |value_opt| { if let Some(existing) = value_opt { let mut backing_bytes = sled::IVec::from(existing); // 验证数据对齐(这里其实不是必须的,因为我们使用了U64) let layout: LayoutVerified<&mut [u8], Value> = LayoutVerified::new_unaligned(&mut *backing_bytes) .expect("bytes do not fit schema"); // 得到底层数据的可变引用 let value: &mut Value = layout.into_mut(); let new_count = value.count.get() + 1; println!("incrementing count to {}", new_count); value.count.set(new_count); Some(backing_bytes) } else { println!("setting count to 0"); // 初始化一个Value Some(sled::IVec::from( Value { count: U64::new(0), whatever: [0; 16] }.as_bytes(), )) }})?;AI代码助手复制代码
关于“sled怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“sled怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4581704/blog/4375623