ZRangeByRank

返回指定bucket有序集合的排名start到end的范围(包括start和end)的所有元素。

  1. // ZAdd add items
  2. if err := db.Update(
  3. func(tx *nutsdb.Tx) error {
  4. bucket := "myZSet2"
  5. key1 := []byte("key1")
  6. return tx.ZAdd(bucket, key1, 1, []byte("val1"))
  7. }); err != nil {
  8. log.Fatal(err)
  9. }
  10. if err := db.Update(
  11. func(tx *nutsdb.Tx) error {
  12. bucket := "myZSet2"
  13. key2 := []byte("key2")
  14. return tx.ZAdd(bucket, key2, 2, []byte("val2"))
  15. }); err != nil {
  16. log.Fatal(err)
  17. }
  18. if err := db.Update(
  19. func(tx *nutsdb.Tx) error {
  20. bucket := "myZSet2"
  21. key3 := []byte("key3")
  22. return tx.ZAdd(bucket, key3, 3, []byte("val3"))
  23. }); err != nil {
  24. log.Fatal(err)
  25. }
  26. // ZRangeByRank
  27. if err := db.View(
  28. func(tx *nutsdb.Tx) error {
  29. bucket := "myZSet2"
  30. if nodes, err := tx.ZRangeByRank(bucket, 1, 2); err != nil {
  31. return err
  32. } else {
  33. fmt.Println("ZRangeByRank nodes :", nodes)
  34. for _, node := range nodes {
  35. fmt.Println("item:", node.Key(), node.Score())
  36. }
  37. //item: key1 1
  38. //item: key2 2
  39. }
  40. return nil
  41. }); err != nil {
  42. log.Fatal(err)
  43. }