Initial commit: web_hghl_server
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
package redis
|
||||
|
||||
import (
|
||||
"github.com/go-redis/redis"
|
||||
"time"
|
||||
)
|
||||
|
||||
// List represents a redis list.
|
||||
type List struct {
|
||||
key string
|
||||
client *redis.Client
|
||||
}
|
||||
|
||||
// NewList creates a new redis list instance.
|
||||
func NewList(client *redis.Client, key string) *List {
|
||||
return &List{
|
||||
key: key,
|
||||
client: client,
|
||||
}
|
||||
}
|
||||
|
||||
// Key returns the key of the list.
|
||||
func (l *List) Key() string {
|
||||
return l.key
|
||||
}
|
||||
|
||||
// Expire sets the expiration time of the list.
|
||||
func (l *List) Expire(expiration time.Duration) (bool, error) {
|
||||
return l.client.Expire(l.key, expiration).Result()
|
||||
}
|
||||
|
||||
// Delete deletes the list.
|
||||
func (l *List) Delete() (int64, error) {
|
||||
return l.client.Del(l.key).Result()
|
||||
}
|
||||
|
||||
// Len returns the length of the list.
|
||||
func (l *List) Len() (int64, error) {
|
||||
return l.client.LLen(l.key).Result()
|
||||
}
|
||||
|
||||
// Push adds a new element to the tail of the list.
|
||||
func (l *List) Push(value interface{}) error {
|
||||
return l.client.RPush(l.key, value).Err()
|
||||
}
|
||||
|
||||
// Pop removes and returns the first element of the list.
|
||||
func (l *List) Pop() (string, error) {
|
||||
return l.client.LPop(l.key).Result()
|
||||
}
|
||||
|
||||
// PushFront adds a new element to the head of the list.
|
||||
func (l *List) PushFront(value interface{}) error {
|
||||
return l.client.LPush(l.key, value).Err()
|
||||
}
|
||||
|
||||
// PopBack removes and returns the last element of the list.
|
||||
func (l *List) PopBack() (string, error) {
|
||||
return l.client.RPop(l.key).Result()
|
||||
}
|
||||
|
||||
// Index returns the element at the specified index.
|
||||
func (l *List) Index(index int64) (string, error) {
|
||||
return l.client.LIndex(l.key, index).Result()
|
||||
}
|
||||
|
||||
// Range returns a range of elements from the list.
|
||||
func (l *List) Range(start, stop int64) ([]string, error) {
|
||||
return l.client.LRange(l.key, start, stop).Result()
|
||||
}
|
||||
|
||||
// Trim removes elements from the list.
|
||||
func (l *List) Trim(start, stop int64) error {
|
||||
return l.client.LTrim(l.key, start, stop).Err()
|
||||
}
|
||||
|
||||
// Set sets the element at the specified index.
|
||||
func (l *List) Set(index int64, value interface{}) error {
|
||||
return l.client.LSet(l.key, index, value).Err()
|
||||
}
|
||||
|
||||
// InsertBefore inserts a new element before the specified element.
|
||||
func (l *List) InsertBefore(pivot, value interface{}) error {
|
||||
return l.client.LInsertBefore(l.key, pivot, value).Err()
|
||||
}
|
||||
|
||||
// InsertAfter inserts a new element after the specified element.
|
||||
func (l *List) InsertAfter(pivot, value interface{}) error {
|
||||
return l.client.LInsertAfter(l.key, pivot, value).Err()
|
||||
}
|
||||
|
||||
// Remove removes all occurrences of the specified element.
|
||||
func (l *List) Remove(count int64, value interface{}) (int64, error) {
|
||||
return l.client.LRem(l.key, count, value).Result()
|
||||
}
|
||||
Reference in New Issue
Block a user