redis 的使用 ( list列表类型操作)
2016-04-28 22:58
771 查看
list 数据类型 列表类型
list 类型是一个双向操作 从链表的头部或者尾部添加删除元素
list 既可以用作栈 也可以用作队列
list 链表的类型应用场合:
获取最新的 10 个用户的信息
select * from user order by logintime desc limit 10;
数据不复杂 但是 对数据库的负载比较大
如给关键字 logintime 设置索引 耗费资源
用 redis 通过 list 链表实现以上功能
在 list 链表中只保留最新的10个数据
每一次进来一个新数据就删除一条旧数据
从而实现节约数据资源 减少服务器负载压力
// list 类型 操作
lpush key string 在 key 对应 list 头部添加字符串元素
rpush key string 在 key 对应 list 尾部添加字符串元素
rpop key 从 list 尾部删除元素 并返回删除的元素
lpop key 从 list 头部删除元素 并返回删除的元素
llen key 返回 key 对应 list 的长度 key 不存在 返回 0 如果key对应的类型不是 list 返回错误
lrange key start end 返回指定区间内的元素 从下标 0 开始
ltrin key start end 截取list 保留指定区间的元素
// 注意
// lpush 和 rpop 结合使用
// rpush 和 lpop 结合使用
eg : 只保存5条数据
原理 (队列) list 链表 namelogin 保存最新3条数据的
头部 >>> 添加新用户 >>> laowen9
laowen8
laowen7
laowen6
尾部 >>> 踢出旧用户 >>> laowen5
// 操作开始 如下
// 头部每更新一条 就删除尾部一条 最终只保留5条数据
lpush namelogin laowen1 // OK 表示添加OK
lpush namelogin laowen2 // OK 表示添加OK
lpush namelogin laowen3 // OK 表示添加ok
lpush namelogin laowen4 // OK 表示添加OK
lpush namelogin laowen5 // OK 表示添加OK
lpush namelogin laowen6 // OK 表示添加OK
rpop namelogin // 返回 "laowen1" 删除list表最后一条数据
lrange namelogin 0 4
// 返回值为
// 1) "laowen6"
// 2) "laowen5"
// 3) "laowen4"
// 4) "laowen3"
// 5) "laowen2"
llen namelogin // 返回 (integer) 5 // 返回的是数据的长度
// 截取lsit 保留指定范围内的元素
ltrim namelogin 2 4 // 返回 OK
lrange namelogin 0 2
// 返回值为
// 1) "laowen5"
// 2) "laowen4"
// 3) "laowen3"
总结 队列 栈 区别
队列 >>> 头部 添加数据 尾部 删除数据
头部 添加新用户 >>> laowen9
laowen8
laowen7
laowen6
尾部 踢出旧用户 >>> laowen5
栈 >>> 头部 添加数据 头部 删除数据
头部 添加新用户 >>> laowen9
头部 踢出旧用户 >>> laowen5
laowen8
laowen7
laowen6
list 类型是一个双向操作 从链表的头部或者尾部添加删除元素
list 既可以用作栈 也可以用作队列
list 链表的类型应用场合:
获取最新的 10 个用户的信息
select * from user order by logintime desc limit 10;
数据不复杂 但是 对数据库的负载比较大
如给关键字 logintime 设置索引 耗费资源
用 redis 通过 list 链表实现以上功能
在 list 链表中只保留最新的10个数据
每一次进来一个新数据就删除一条旧数据
从而实现节约数据资源 减少服务器负载压力
// list 类型 操作
lpush key string 在 key 对应 list 头部添加字符串元素
rpush key string 在 key 对应 list 尾部添加字符串元素
rpop key 从 list 尾部删除元素 并返回删除的元素
lpop key 从 list 头部删除元素 并返回删除的元素
llen key 返回 key 对应 list 的长度 key 不存在 返回 0 如果key对应的类型不是 list 返回错误
lrange key start end 返回指定区间内的元素 从下标 0 开始
ltrin key start end 截取list 保留指定区间的元素
// 注意
// lpush 和 rpop 结合使用
// rpush 和 lpop 结合使用
eg : 只保存5条数据
原理 (队列) list 链表 namelogin 保存最新3条数据的
头部 >>> 添加新用户 >>> laowen9
laowen8
laowen7
laowen6
尾部 >>> 踢出旧用户 >>> laowen5
// 操作开始 如下
// 头部每更新一条 就删除尾部一条 最终只保留5条数据
lpush namelogin laowen1 // OK 表示添加OK
lpush namelogin laowen2 // OK 表示添加OK
lpush namelogin laowen3 // OK 表示添加ok
lpush namelogin laowen4 // OK 表示添加OK
lpush namelogin laowen5 // OK 表示添加OK
lpush namelogin laowen6 // OK 表示添加OK
rpop namelogin // 返回 "laowen1" 删除list表最后一条数据
lrange namelogin 0 4
// 返回值为
// 1) "laowen6"
// 2) "laowen5"
// 3) "laowen4"
// 4) "laowen3"
// 5) "laowen2"
llen namelogin // 返回 (integer) 5 // 返回的是数据的长度
// 截取lsit 保留指定范围内的元素
ltrim namelogin 2 4 // 返回 OK
lrange namelogin 0 2
// 返回值为
// 1) "laowen5"
// 2) "laowen4"
// 3) "laowen3"
总结 队列 栈 区别
队列 >>> 头部 添加数据 尾部 删除数据
头部 添加新用户 >>> laowen9
laowen8
laowen7
laowen6
尾部 踢出旧用户 >>> laowen5
栈 >>> 头部 添加数据 头部 删除数据
头部 添加新用户 >>> laowen9
头部 踢出旧用户 >>> laowen5
laowen8
laowen7
laowen6
相关文章推荐
- redis 的使用 (基础, key操作, string类型操作)
- redis 的安装
- Redis_Jedis简易指南
- Java实现缓存(类似于Redis)
- hadoop正式学习之redis------redis的学习和操作1
- tomcat redis nginx 实现session共享
- Jedis对Redis五大类型操作简单介绍
- [Redis]QForkMasterInit错误的解决…
- spring session redis做session共享
- thinkphp使用redis存储session
- redis不集群,单机调用生成连接池
- redis在PHP中的基本使用案例
- Redis安装部署
- Redis学习笔记(-)win7安装redis
- redis
- springmvc+redis项目搭建
- hadoop redis mongodb
- redis linux 基本命令
- Redis事务使用总结
- redis windows7 64