一、前戏 在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。 从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高...
1.介绍redis中的list既实现了栈(先进后出)又实现了队列(先进先出)1.示意图 2.各命令详解LPUSH/RPUSHLPUSH:从队列的左边入队一个或多个元素将所有指定的值插入到存于 key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。 如果 key 对应的值不是一个 list 的话,那么会返回一个错误。可以使用一个命令把多个元素 push 进入列表,只需在命令末尾加上多个指定的参数。元素是从最左端的到最右端的、一个...
redis中压缩列表ziplist相关的文件为:ziplist.h与ziplist.c压缩列表是redis专门开发出来为了节约内存的内存编码数据结构。源码中关于压缩列表介绍的注释也写得比较详细。一、数据结构压缩列表的整体结构如下1/*
2 <zlbytes> <zltail> <zllen> <entry> <entry> ... <entry> <zlend>
3 */各个部分的含义项类型长度用途zlbytesuint32_t4Bziplist总字节数,包括zlbyteszltailuint32_t4B最后一个entry的偏移量zllenuint16_t2Bentry数量...
redis测试:package business;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;...
@Autowired@Resource(name="redisTemplate")private RedisTemplate<String, String> rt;publicvoid flushdb(){rt.execute(new RedisCallback<Object>() {public String doInRedis(RedisConnection connection) throws DataAccessException {connection.flushDb();return "ok";}});}publicvoid set(){flushdb();ListOperations<String, String> vo = rt.opsForList();vo.leftPush("book", "wzg");vo.leftPushAll("book", "cff","cl"...
List 是基本的数据类型,列表。redis命令不区分大小写。在redis中,可以把List用作 栈、队列、阻塞队列。所有的list命令都是以“l”开头的1.向List插入数值127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> 2.获取List全部的值127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> 3.利用lran...
原文链接:http://blog.csdn.net/xyang81/article/details/51918129环境:
OS:CentOS7 64位
server版本:Redis 3.2.0
client 版本:Jedis 2.8.0在Maven中引用jedis的jar:<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.0</version></de...
error_reporting(E_ALL);
if(empty($a)){echo 111;
}else{echo 3333;
}die;
phpinfo();die;$redis = new Redis();
$redis->connect(‘localhost‘, 6379);
$redis->set("name", ‘wensong.yu‘);
var_dump($redis->get("name"));$key = "kucun";
for($i = 0;$i < 10; $i++){$redis->lPush($key, 1);
}$res = $redis->lPop($key);
if(!$res){return "没得库存";
}//luoji ....$flag = true;//...if(!$flag){$res->lPush($key, 1);
}...
1.lpush 从左插入2.rpush从右插入3.lrang start end 查看从start到end的数据(0到-1查看所有元素)4.lpop key 从左边弹出第一元素并删除5.rpop key 从右边弹出一个元素并删除6.lrem key count value count为正数从左开始删除几个(count)value,count为负数从后面删除7.ltrim key start end 截取(剪切)从start开始end结束8.lindex key 返回索引对应的值9.llen key 查看链表的长度10.linsert key befor|after b a 在a的前面或者...
列表类型采用双向链表实现的,借助列表类型redis还可以作为队列使用,一个列表类型key最多能容纳2^32-1个元素1、向列表两端增加元素#向左边增加元素,返回增加后列表的长度lpush key value [value...]
#向右边增加元素,返回增加后列表的长度
rpush key value [value...] 2、从列表两端弹出元素#从左边弹出lpop key
#从右边弹出
rpop key 3、获取列表中的元素个数#如果不存在返回0
llen key 4、获取...
原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/51166709今天为大家带来Redis五大数据类型之一 – List的源码分析。Redis中的List类型是一种双向链表结构,主要支持以下几种命令:lpush、rpush、lpushx、rpushx lpop、rpop、lrange、ltrim、lrem、rpoplpush linsert、llen、lindex、lset blpop、brpop、brpoplpushList的相关操作主要定义在t_list.c和redis.h文件中。归纳起来,主要有以下几个要点:1、编...
BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。LINDE...
[BEGIN] 2017/7/30 20:56:36127.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"
1...
Hash操作
hash表现形式上有些像python中的dict,可以存储一组关联性较强的数据,redis中Hash在内存中的存储格式如下图:1、hset(name,key,value)#name对应的hash中设置一个键值对(不存在,则创建;否则,修改)#参数:#name,redis的name#key,name对应的hash中的key#vale,name对应的Hash中的value#如:127.0.0.1:6379> hset fle1 k1 2(integer) 1
2、hmset(name,mapping)#在name对应的Hash中批量设置键值对#参数:#name,redis的name#m...
栈 用LPUSH创建名为“stack”的key并放入元素,使用LRANGE查看放入的元素,使用LPOP取出放入的元素;可以发现取出的顺序与放入的顺序相反(先进后出),其特性与Java中的栈一样。
LPUSH stack q w e r t y u i o p
LRANGE stack 0 -1
LPOP stack 队列 用LPUSH创建名为“queue”的key并放入元素,使用LRANGE查看放入的元素,使用RPOP取出放入的元素;可以发现取出的顺序与放入的顺序相同(先进先出),其特性与Java中的队列一样...