ZRemRangeByRank

删除所有成员满足排名start到end(包括start和end)在一个指定的有序集合bucket中。其中排名以1开始,排名1表示第一个节点元素,排名-1表示最后的节点元素。

  1. if err := db.Update(
  2. func(tx *nutsdb.Tx) error {
  3. bucket := "myZSet6"
  4. key1 := []byte("key1")
  5. return tx.ZAdd(bucket, key1, 10, []byte("val1"))
  6. }); err != nil {
  7. log.Fatal(err)
  8. }
  9. if err := db.Update(
  10. func(tx *nutsdb.Tx) error {
  11. bucket := "myZSet6"
  12. key2 := []byte("key2")
  13. return tx.ZAdd(bucket, key2, 20, []byte("val2"))
  14. }); err != nil {
  15. log.Fatal(err)
  16. }
  17. if err := db.Update(
  18. func(tx *nutsdb.Tx) error {
  19. bucket := "myZSet6"
  20. key3 := []byte("key3")
  21. return tx.ZAdd(bucket, key3, 30, []byte("val2"))
  22. }); err != nil {
  23. log.Fatal(err)
  24. }
  25. if err := db.View(
  26. func(tx *nutsdb.Tx) error {
  27. bucket := "myZSet6"
  28. if nodes,err := tx.ZMembers(bucket); err != nil {
  29. return err
  30. } else {
  31. fmt.Println("before ZRemRangeByRank, ZMembers nodes",nodes)
  32. for _,node:=range nodes {
  33. fmt.Println("item:",node.Key(),node.Score())
  34. }
  35. // before ZRemRangeByRank, ZMembers nodes map[key3:0xc00008d450 key1:0xc00008d270 key2:0xc00008d360]
  36. // item: key1 10
  37. // item: key2 20
  38. // item: key3 30
  39. }
  40. return nil
  41. }); err != nil {
  42. log.Fatal(err)
  43. }
  44. if err := db.Update(
  45. func(tx *nutsdb.Tx) error {
  46. bucket := "myZSet6"
  47. if err := tx.ZRemRangeByRank(bucket, 1,2); err != nil {
  48. return err
  49. }
  50. return nil
  51. }); err != nil {
  52. log.Fatal(err)
  53. }
  54. if err := db.View(
  55. func(tx *nutsdb.Tx) error {
  56. bucket := "myZSet6"
  57. if nodes,err := tx.ZMembers(bucket); err != nil {
  58. return err
  59. } else {
  60. fmt.Println("after ZRemRangeByRank, ZMembers nodes",nodes)
  61. for _,node:=range nodes {
  62. fmt.Println("item:",node.Key(),node.Score())
  63. }
  64. // after ZRemRangeByRank, ZMembers nodes map[key3:0xc00008d450]
  65. // item: key3 30
  66. // key1 ZScore 10
  67. }
  68. return nil
  69. }); err != nil {
  70. log.Fatal(err)
  71. }