List操作
最后更新于:2022-04-02 04:51:38
### List操作
**rpush(key, value)**:
将一个或多个值 value 插入到列表 key 的表尾(最右边)。
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。
如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。
~~~
func ListTest(redisdb *redis.Client) {
result,err:=redisdb.RPush("list1","a","b","c").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
---------------------------------------------------------------
3
~~~
**lpush(key, value)**:
将一个或多个值 value 插入到列表 key 的表头
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。
如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。
~~~
func ListTest(redisdb *redis.Client) {
result,err:=redisdb.RPush("list1","d").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
--------------------------------------------------------
4 //返回4表示插入后列表中有4个元素,以前是abc,当前是dabc
~~~
**llen(key)**:返回名称为key的list的长度。
~~~
func ListTest(redisdb *redis.Client) {
result,err:=redisdb.LLen("list1").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
-----------------------------------------------------
5
~~~
**lrange(key, start, end)**:
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
~~~
func ListTest(redisdb *redis.Client) {
result,err:=redisdb.LRange("list1",0,100).Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
~~~
**ltrim(key, start, end)**:
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
当 key 不是列表类型时,返回一个错误。
~~~
func ListTest(redisdb *redis.Client) {
result,err:=redisdb.LTrim("list1",2,4).Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
------------------------------------------------------------
原来是d,a,b,c,d
现在是b,c,d
~~~
**lindex(key, index)**:返回名称为key的list中index位置的元素。
~~~
func ListTest(redisdb *redis.Client) {
result,err:=redisdb.LIndex("list1",1).Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
~~~
**lset(key, index, value)**:给名称为key的list中index位置的元素赋值。
~~~
func ListTest(redisdb *redis.Client) {
result,err:=redisdb.LSet("list1",1,"hello").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
-------------------------------------------------------------
原来是b,c,d
现在是b,hello,d
~~~
**lpop(key)**:返回并删除名称为key的list中的首元素。
~~~
func ListTest(redisdb *redis.Client) {
result,err:=redisdb.LPop("list1").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
--------------------------------------------------
返回b
原来是b,hello,d
现在是hello,d
~~~
**rpop(key)**:返回并删除名称为key的list中的尾元素。
~~~
func ListTest(redisdb *redis.Client) {
result,err:=redisdb.RPop("list1").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
-----------------------------------------------------
返回d
原来是hello,d
现在是hello
~~~
';