mirror of https://github.com/ledisdb/ledisdb.git
commit
6d836cc4b7
|
@ -101,6 +101,7 @@ var (
|
||||||
errSetMemberSize = errors.New("invalid set member size")
|
errSetMemberSize = errors.New("invalid set member size")
|
||||||
errZSetMemberSize = errors.New("invalid zset member size")
|
errZSetMemberSize = errors.New("invalid zset member size")
|
||||||
errExpireValue = errors.New("invalid expire value")
|
errExpireValue = errors.New("invalid expire value")
|
||||||
|
errListIndex = errors.New("invalid list index")
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -477,6 +477,39 @@ func (db *DB) LTrimBack(key []byte, trimSize int32) (int32, error) {
|
||||||
func (db *DB) LPush(key []byte, args ...[]byte) (int64, error) {
|
func (db *DB) LPush(key []byte, args ...[]byte) (int64, error) {
|
||||||
return db.lpush(key, listHeadSeq, args...)
|
return db.lpush(key, listHeadSeq, args...)
|
||||||
}
|
}
|
||||||
|
func (db *DB) LSet(key []byte, index int32, value []byte) error {
|
||||||
|
if err := checkKeySize(key); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var seq int32
|
||||||
|
var headSeq int32
|
||||||
|
var tailSeq int32
|
||||||
|
//var size int32
|
||||||
|
var err error
|
||||||
|
t := db.listBatch
|
||||||
|
t.Lock()
|
||||||
|
defer t.Unlock()
|
||||||
|
metaKey := db.lEncodeMetaKey(key)
|
||||||
|
|
||||||
|
headSeq, tailSeq, _, err = db.lGetMeta(nil, metaKey)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if index >= 0 {
|
||||||
|
seq = headSeq + index
|
||||||
|
} else {
|
||||||
|
seq = tailSeq + index + 1
|
||||||
|
}
|
||||||
|
if seq < headSeq || seq > tailSeq {
|
||||||
|
return errListIndex
|
||||||
|
}
|
||||||
|
sk := db.lEncodeListKey(key, seq)
|
||||||
|
t.Put(sk, value)
|
||||||
|
err = t.Commit()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (db *DB) LRange(key []byte, start int32, stop int32) ([][]byte, error) {
|
func (db *DB) LRange(key []byte, start int32, stop int32) ([][]byte, error) {
|
||||||
if err := checkKeySize(key); err != nil {
|
if err := checkKeySize(key); err != nil {
|
||||||
|
|
Loading…
Reference in New Issue