当前位置: 首页 > news >正文

自己做服务器的网站吗网站开发课程的心得

自己做服务器的网站吗,网站开发课程的心得,移动互联网营销公司,最新推广方法使用list实现一个队列,可以从左侧入队,也可以从右侧入对 即可以从左侧读取,也可以从右侧读取 1、Lindex Lindex 命令用于通过索引获取列表中的元素 也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的…

使用list实现一个队列,可以从左侧入队,也可以从右侧入对
即可以从左侧读取,也可以从右侧读取

1、Lindex

Lindex 命令用于通过索引获取列表中的元素
也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二。

redis 127.0.0.1:6379> LINDEX KEY_NAME INDEX_POSITION 

列表中下标为指定索引值的元素。 如果指定索引值不在列表的区间范围内,返回 nil。
例如:

redis 127.0.0.1:6379> LPUSH mylist "World"
(integer) 1redis 127.0.0.1:6379> LPUSH mylist "Hello"
(integer) 2redis 127.0.0.1:6379> LINDEX mylist 0
"Hello"redis 127.0.0.1:6379> LINDEX mylist -1
"World"redis 127.0.0.1:6379> LINDEX mylist 3        # index不在 mylist 的区间范围内
(nil)
2、Rpush

Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)
如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。

redis 127.0.0.1:6379> RPUSH KEY_NAME VALUE1..VALUEN

返回值:是执行 RPUSH 操作后,列表的长度。
例如:

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 3
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"
3) "bar"

set是做不了的,set没有顺序,无法满足FIFO

3、代码实现
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;import java.util.List;@Component
public class ListVer{public final static String RS_LIST_MQ_NS = "rlm:";@Autowiredprivate JedisPool jedisPool;/*消费者接受消息*/public List<String> get(String key) {Jedis jedis = null;try {jedis = jedisPool.getResource();//阻塞式的等待消息,如果队列中没有数据的话,就一直等//0:表示等待0s,没有数据就不等待了return jedis.brpop(0,RS_LIST_MQ_NS + key);} catch (Exception e) {throw new RuntimeException("接受消息失败!");} finally {jedis.close();}}/*生产者发送消息*/public void put(String key, String message) {Jedis jedis = null;try {jedis = jedisPool.getResource();jedis.lpush(RS_LIST_MQ_NS+key,message);} catch (Exception e) {throw new RuntimeException("发送消息失败!");} finally {jedis.close();}}
}

注意:保持key的一致性

延迟消息的场景:
比如已经加入购物车中,购买的电影票,还没有付款的时候锁定座位,进行延迟消息投递。
之后再启动另一个消费端去监控这个延迟消息,到了时间后还没有支付的话,则进行取消操作.

可以使用sorted set(有序集合)来实现延迟消息,实际生产中不建议使用,还是使用正经的MQ。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;
import java.util.concurrent.TimeUnit;@Component
public class ZSetVer {//标记是延迟消息的keypublic final static String RS_ZS_MQ_NS = "rzsm:";@Autowiredprivate JedisPool jedisPool;/*生产者,消息的发送,实际生产中,相关参数,比如订单信息,过期时间等应该传入,可以考虑将订单信息json化存入redis*/public void producer() {Jedis jedis = null;try {jedis = jedisPool.getResource();for (int i = 0; i < 5; i++) {//订单idString order_id = "000000000"+i;double score = System.currentTimeMillis()+(i*1000);jedis.zadd(RS_ZS_MQ_NS+"orderId",score, order_id);System.out.println("生产订单: " + order_id + " 当前时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));System.out.println((3 + i) + "秒后执行");}} catch (Exception e) {throw new RuntimeException("生产消息失败!");} finally {jedis.close();}}//消费者,取订单public void consumerDelayMessage() {Jedis jedis = null;try {jedis = jedisPool.getResource();while (true) {Set<String> order = jedis.zrangeByScore(RS_ZS_MQ_NS+"orderId", 0,System.currentTimeMillis(), 0,1);if (order == null || order.isEmpty()) {System.out.println("当前没有等待的任务");try {TimeUnit.MILLISECONDS.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}continue;}String s = order.iterator().next();if (jedis.zrem(RS_ZS_MQ_NS+"orderId", s)>0) {/*业务处理*/System.out.println(s);}}} catch (Exception e) {throw new RuntimeException("消费消息失败!");} finally {jedis.close();}}
}
http://www.yayakq.cn/news/310397/

相关文章:

  • 杭州响应式网站建设wordpress语言中文
  • 南昌大学作风建设网站网站开发ui
  • 企业网站优化定制重庆网站制作设计获客
  • 租车网站建设方案如何做外贸营销型网站
  • 集团网站制作方案ppt慈溪市规划建设网站
  • 网站内容规划模板网站备案后下一步做什么
  • 示范高职建设网站网站建设速成班培训
  • 织梦网站后台打不开来几个好看的网站
  • 做网站前的准备济南网站建设伍际网络
  • 帮做3d模型的网站电商网站开发平台用什么人开发
  • 做网站排名工具杭州建设网站网站
  • 南京建站公司哪家好mysql数据库建设网站
  • pc网站转换手机网站wap某网站安全建设方案
  • 网站开发包括几个部分盐城整站优化
  • 网站建设 中山南阳做个网站多少钱
  • 珠海响应式网站建设推广公司网站图片alt属性
  • 梅州建站公司天津建设工程信息网评标专家 终审
  • 云存储做网站湖南网站建设哪家有
  • 贵州省交通建设集团网站南昌网站建设哪家比较好
  • 两学一做学习教育网站如何创建微信小程序下单
  • 珠海哪个公司做网站好开了个网站用年份做名字好吗
  • 学前端要逛那些网站重庆企业网站备案要多久时间
  • 微网站的功能资讯文章类网站织梦模板
  • 烟台网站建设平台网络营销主要学些什么
  • 深圳大型网站建设服务公司在线手机网站预览
  • 推荐一些做网站网络公司网站建设的基础
  • wordpress图片自适应保定seo外包服务商
  • 专业网站制作推广服务做网站要交百分七十定金
  • 网站建设个一般需要花费多少钱网络技术就业方向
  • php网站开发干嘛的阿里云做视频网站犯法吗