Add Set and UniqueQueue implementations #1

Merged
lunny merged 7 commits from zeripath/levelqueue:add-set-commands into master 2020-01-18 05:41:16 +00:00
2 changed files with 20 additions and 0 deletions
Showing only changes of commit 163338e60c - Show all commits

View File

@ -132,6 +132,10 @@ func (queue *UniqueQueue) LHandle(h func([]byte) error) error {
})
}
func (queue *UniqueQueue) Has(data []byte) (bool, error) {
return queue.SIsMember(uniqueQueueKey, data)
}
func genSetKey(key []byte, value []byte) []byte {
setKey := make([]byte, len(key)+1+len(value))
copy(setKey[0:len(key)], key)

View File

@ -81,6 +81,14 @@ func TestUniqueQueue(t *testing.T) {
assert.NoError(t, err)
assert.EqualValues(t, 1, queue.Len())
has, err := queue.Has([]byte("test3"))
assert.NoError(t, err)
assert.True(t, has)
has, err = queue.Has([]byte("test4"))
assert.NoError(t, err)
assert.False(t, has)
err = queue.LPush([]byte("test4"))
assert.NoError(t, err)
@ -94,6 +102,14 @@ func TestUniqueQueue(t *testing.T) {
assert.NoError(t, err)
assert.EqualValues(t, "test4", string(data))
has, err = queue.Has([]byte("test3"))
assert.NoError(t, err)
assert.False(t, has)
has, err = queue.Has([]byte("test4"))
assert.NoError(t, err)
assert.False(t, has)
key := []byte("additional-set")
// SAdd