### 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 ~~~