func (s *RedisStore) Put(b *bucket.Bucket) error { defer utils.MeasureT("bucket.put", time.Now()) rc := s.redisPool.Get() defer rc.Close() b.Lock() key := b.Id.String() value := b.Vals b.Unlock() //TODO(ryandotsmith): Ensure consistent keys are being written. partition := s.bucketPartition("outlet", []byte(key)) rc.Send("MULTI") rc.Send("RPUSH", key, value) rc.Send("EXPIRE", key, 300) rc.Send("SADD", partition, key) rc.Send("EXPIRE", partition, 300) _, err := rc.Do("EXEC") if err != nil { return err } return nil }