예제 #1
0
파일: tx.go 프로젝트: Aurlin/ledisdb
func (tx *Tx) GetSlice(key []byte) (Slice, error) {
	if v, err := tx.Get(key); err != nil {
		return nil, err
	} else if v == nil {
		return nil, nil
	} else {
		return driver.GoSlice(v), nil
	}
}
예제 #2
0
파일: snapshot.go 프로젝트: Aurlin/ledisdb
func (s *Snapshot) GetSlice(key []byte) (Slice, error) {
	if d, ok := s.ISnapshot.(driver.ISliceGeter); ok {
		v, err := d.GetSlice(key)
		s.st.statGet(v, err)
		return v, err
	} else {
		v, err := s.Get(key)
		if err != nil {
			return nil, err
		} else if v == nil {
			return nil, nil
		} else {
			return driver.GoSlice(v), nil
		}
	}
}
예제 #3
0
파일: db.go 프로젝트: rechen/wharf
func (db *DB) GetSlice(key []byte) (Slice, error) {
	if d, ok := db.db.(driver.ISliceGeter); ok {
		t := time.Now()
		v, err := d.GetSlice(key)
		db.st.statGet(v, err)
		db.st.GetTotalTime.Add(time.Now().Sub(t))
		return v, err
	} else {
		v, err := db.Get(key)
		if err != nil {
			return nil, err
		} else if v == nil {
			return nil, nil
		} else {
			return driver.GoSlice(v), nil
		}
	}
}