缓存数据库-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之路--MySQL多表查询
一 介绍 我们在写项目的时候一般都会建一个数据库,数据库里面会存很多的表,不可能把所有的数据都放在一张表里,因为分表来存数据节省空间,数据的组织结构更清晰,解耦和程度更高,但是这些表本质上还不是一个整 ...
- vue 关于生命周期
序言: 1. vue 单组件的生命周期: 2. vue 父子组件的生命周期: 3. axios 异步请求 与 vue 的组件周期: 一.vue 每个组件的生命周期 关于每个组件的生命周期,官方文档里也 ...
- Coalesce (MS SQL Server)——取指定内容(列)中第一个不为空的值
oalesce 获得参数中第一个不为空的表达式. 语法: COALESCE ( expression [ ,...n ] ) 例子:CREATE TABLE wages ...
- vhdl——type
TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 TYPE 数据类型名 IS 数据类型定义 常用的用户自定义的数据类型有枚举型,数组型,记录型.其中枚举型的在状态机的描述中经常使用到 ,数 ...
- MailUtils类:用于发送激活邮件
该类用于发送激活邮件 package com.itheima.utils; import java.util.Properties; import javax.mail.Authenticator; ...
- Ubuntu 16.04配置Java Web开发环境
说明:在Linux下无论是开发还是服务器配置,我个人建议都安装二进制包版本的,优点:配置清晰,容易发现问题,性能调优方便等.缺点:配置太复杂.而其余平台的建议是一键安装版本,毕竟都是用于测试的,不会实 ...
- Xml的用途
1.可以作为数据库存储数据--通过XML文件存储数据,可以通过javaScript读取外部的XML文件,然后更新HTML的数据内容 2.XML数据以纯文本格式进行存储,提供了独立于软件和硬件的数据存储 ...
- POJ 3621-Sightseeing Cows-最优比率环|SPFA+二分
最优比率环问题.二分答案,对于每一个mid,把节点的happy值归类到边上. 对于每条边,用mid×weight减去happy值,如果不存在负环,说明还可以更大. /*---------------- ...
- Android路径之Javascript基础-笔记
一.Javascript概述(知道) a.一种基于对象和事件驱动的脚本语言 b.作用: 给页面添加动态效果 c.历史: 原名叫做livescript.W3c组织开发的标准叫ECMAscipt. d.特 ...
- King of Destruction HDU - 3002 && HDU - 3691(全局最小割)
求无向图的最小割 有没有源点都一样,不影响 #include <iostream> #include <cstdio> #include <sstream> #in ...