缓存数据库-redis数据类型和操作(list)
转:
缓存数据库-redis数据类型和操作(list)
一:Redis 列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
List操作,redis中的List在在内存中按照一个name对应一个List来存储。如图:

二:列表常用操作
1)lpush(name,values) 在name对应的list中添加元素,每个新的元素都添加到列表的最左边
2)rpush(name, values) 在name对应的list中添加元素,每个新的元素都添加到列表的最右边
3)lpushx(name,value) 在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边
4)rpushx(name, value) 在name对应的list中添加元素,只有name已经存在时,值添加到列表的最右边
5)llen(name) name对应的list元素的个数
6)linsert(name, where, refvalue, value)) 在name对应的列表的某一个值前或后插入一个新值
# name,redis的name # where,BEFORE或AFTER # refvalue,标杆值,即:在它前后插入数据 # value,要插入的数据 # keys,redis的name的集合 # timeout,超时时间,当元素所有列表的元素获取完之后,阻塞等待列表内有数据的时间(秒), 0 表示永远阻塞 # 更多: # r.brpop(keys, timeout),从右向左获取数据 # 从一个列表的右侧移除一个元素并将其添加到另一个列表的左侧
# src,取出并要移除元素的列表对应的name # dst,要插入元素的列表对应的name # timeout,当src对应的列表中没有数据时,阻塞等待其有数据的超时时间(秒),0 表示永远阻塞三:示例

[BEGIN] 2017/7/30 20:56:36 127.0.0.1:6379> lpush name "shi"
(integer) 1
127.0.0.1:6379> lpush name "san"
(integer) 2
127.0.0.1:6379> LRANGE name 0 -1
1) "san"
2) "shi"
127.0.0.1:6379> RPUSH name jun
(integer) 3
127.0.0.1:6379> LRANGE name 0 -1
1) "san"
2) "shi"
3) "jun"
127.0.0.1:6379> LPUSHX name tianshi
(integer) 4
127.0.0.1:6379> LRANGE name 0 -1
1) "tianshi"
2) "san"
3) "shi"
4) "jun"
127.0.0.1:6379> LPUSHX name1 tianshi
(integer) 0
127.0.0.1:6379> RPUSHX name xiaoliu
(integer) 5
127.0.0.1:6379> LRANGE name 0 -1
1) "tianshi"
2) "san"
3) "shi"
4) "jun"
5) "xiaoliu"
127.0.0.1:6379> RPUSHX name1 xiaoliu
(integer) 0
127.0.0.1:6379> LLEN name1
(integer) 0
127.0.0.1:6379> LLEN name
(integer) 5
127.0.0.1:6379> LINSERT name after shi 111
(integer) 6
127.0.0.1:6379> LRANGE name 0 -1
1) "tianshi"
2) "san"
3) "shi"
4) "111"
5) "jun"
6) "xiaoliu"
127.0.0.1:6379> lset name 0 222
OK
127.0.0.1:6379> LRANGE name 0 -1
1) "222"
2) "san"
3) "shi"
4) "111"
5) "jun"
6) "xiaoliu"
127.0.0.1:6379> lrem name xiaoliu
(error) ERR wrong number of arguments for 'lrem' command
127.0.0.1:6379> LREM name xiaoliu 1
(error) ERR value is not an integer or out of range
127.0.0.1:6379> LREM name xiaoliu 0
(error) ERR value is not an integer or out of range
127.0.0.1:6379> LRANGE name 0 -1
1) "222"
2) "san"
3) "shi"
4) "111"
5) "jun"
6) "xiaoliu"
127.0.0.1:6379> LREM name 1 xiaoliu
(integer) 1
127.0.0.1:6379> LRANGE name 0 -1
1) "222"
2) "san"
3) "shi"
4) "111"
5) "jun"
127.0.0.1:6379> lpop name
"222"
127.0.0.1:6379> LRANGE name 0 -1
1) "san"
2) "shi"
3) "111"
4) "jun"
127.0.0.1:6379> LINDEX name 2
"111"
127.0.0.1:6379> LTRIM name 0 2
OK
127.0.0.1:6379> LRANGE name 0 -1
1) "san"
2) "shi"
3) "111"
127.0.0.1:6379> LPUSH name 1 aaa
(integer) 5
127.0.0.1:6379> LPUSH name1 aaa
(integer) 1
127.0.0.1:6379> LRANGE name 0 -1
1) "aaa"
2) "1"
3) "san"
4) "shi"
5) "111"
127.0.0.1:6379> RPOPLPUSH name name1
"111"
127.0.0.1:6379> LRANGE name1 0 -1
1) "111"
2) "aaa"
127.0.0.1:6379> BLPOP name name1
(error) ERR timeout is not an integer or out of range
127.0.0.1:6379> BLPOP name name1 1
1) "name"
2) "aaa"
127.0.0.1:6379> LRANGE name 0 -1
1) "1"
2) "san"
3) "shi"
127.0.0.1:6379> LRANGE name1 0 -1
1) "111"
2) "aaa"
127.0.0.1:6379> BLPOP name name1 1
1) "name"
2) "1"
127.0.0.1:6379> BLPOP name1 name 1
1) "name1"
2) "111"
127.0.0.1:6379> LRANGE name 0 -1
1) "san"
2) "shi"
127.0.0.1:6379> LRANGE name1 0 -1
1) "aaa"
127.0.0.1:6379> BRPOPLPUSH name1 name 0
"aaa"
127.0.0.1:6379> BRPOPLPUSH name1 name 0 这里没有name1中没有数据的时候就会阻塞,直到有结果过来 "" 通过下面窗口发一条数据过来
(70.24s)

给nam1发送一个结果222
[root@localhost ~]# redis-cli
127.0.0.1:6379> RPUSH name1 222
(integer) 1
127.0.0.1:6379>
缓存数据库-redis数据类型和操作(list)的更多相关文章
- 缓存数据库-redis数据类型和操作(string)
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合) 一:String(字符串) string是redis ...
- 缓存数据库-redis数据类型和操作(sorted set)
一:Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是 ...
- 缓存数据库-redis数据类型和操作(set)
一:Redis 集合(Set) Redis的Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复 ...
- 缓存数据库-redis数据类型和操作(hash)
一:Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 ...
- 缓存数据库redis
什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命 ...
- Redis数据类型及其操作
redis数据类型即操作 1. 字符串 set 设置字符串 格式: set key value 例子: set name kainhuck get 获取字符串的值 格式: get key 例子: ge ...
- 缓存数据库-redis介绍
一:Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...
- Redis数据类型和操作
<"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...
- 三个缓存数据库Redis、Memcache、MongoDB
>>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...
随机推荐
- python之路--装饰器
二 .通用装饰器的写法 python里面的动态代理. 存在的意义: 在不破坏原有的函数和原有函数的调用基础上,给函数添加新的功能 def wrapper(fn): # fn是目标函数. def inn ...
- Java8新特性之Collectors
参考:Java8新特性之Collectors 在第二天,你已经学习了Stream API能够让你以声明式的方式帮助你处理集合.我们看到collect是一个将管道流的结果集到一个list中的结束操作.c ...
- 生存模型(Survival Model)介绍
https://www.cnblogs.com/BinbinChen/p/3416972.html 生存分析,维基上的解释是: 生存分析(Survival analysis)是指根据试验或调查得到的数 ...
- 扩展运算符(spread)是三个点(…)
扩展运算符(spread)是三个点(…),将一个数组||类数组||字符串转为用逗号分隔的序列. js中用来对数组进行操作,把数组里面的东西统统拿出来 一.展开数组 //展开数组 let a = [1, ...
- Memcached cas 陷阱
本地使用的 php7环境,测试好上传到服务器后发现memcached get 报错,服务器上是php5环境: 出错代码如下: $memConnect->get($key,null, Memcac ...
- ExportHandler.ashx
using KYZWeb.Common;using Liger.Data;//using Microsoft.Office.Interop.Excel;using System;using Syste ...
- HTTP协议那些事儿(Web开发补充知识点)
HTTP协议 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数据通信的基础. H ...
- GLSL 变量属性
1. attribute变量为这个attribute变量指定一个位置(用无符号值表示):glBindAttribLocation利用这个“位置”来指定需要传给shader里的attribue变量的数据 ...
- Mail.Ru Cup 2018 Round 2
A:阅读理解. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- POJ 2449 Remmarguts' Date (算竞进阶习题)
A* + dijkstra/spfa 第K短路的模板题,就是直接把最短路当成估价函数,保证估价函数的性质(从当前状态转移的估计值一定不大于实际值) 我们建反图从终点跑最短路,就能求出从各个点到终点的最 ...