怎么在java中实现redis的添加数据

怎么在java中实现redis的添加数据,第1张

需要确保已经安装了 redis 服务及 Java redis 驱动(jedis.jar)

import redis.clients.jedis.Jedis 

public class RedisStringJava {

    public static void main(String[] args) {

        //连接本地的 Redis 服务

        Jedis jedis = new Jedis("localhost")

        System.out.println("连接成功")

        //设置 redis 字符串数据

        jedis.set("str", "字符串")

        // 获取存储的数据并输出

        System.out.println("redis 存储的字符串为: "+ jedis.get("str"))

    }}

歌词中有 心头的微风 的歌,女生唱的

如果没有你

周蕙

如果没有你 日子怎么过

我的心也碎 我的事也不能做

如果没有你 日子怎么过

反正肠已断 我就只能去闯祸

我不管天多么高 更不管地多么厚

我不管天多么高 更不管地多么厚

只要有你伴着我

只要有你伴着我

我的命便为你而活

我的命便为你而活

如果没有你 日子怎么过

如果没有你 日子怎么过

你快靠近我 一同建立新生活

你快靠近我 一同建立新生活

myeclipse中的tomcat的jdk和tomcat中的jdk如何才能一致

选单【window】里的Preferences,设定属性,在MyEclipse下的Tomcat5.5,点选,在其下面JDK,右边“Tomcat JDK name”,“add",选择你安装的JDK的目录即可....这是我的解决办法,可以试下,也许可以

我爸的亲姐的儿子的女儿叫我什么?

她是你的表侄女。如果你是女人,就是姑姑,是男的就是叔叔。大多不带方言都是这么称呼

牡丹江吃炒菜的、好吃的、地方大的

太平路上有个鱼米之乡你去那吧,适合你。

Tomcat的bin目录下的startup.bat和Tomcat7.exe的区别

一、tomcat7.exe与startup.bat的区别:

1、这两个都可以启动tomcat,但tomcat7.exe必须安装了服务才能启动,而startup.bat不需要。

2、另外一个区别是它们启动所使用的JAVA环境配置是分开的tomcat7.exe启动所使用JAVA配置与服务启动所使用的JAVA配置一样,都是通过tomcat7w.exe的JAVA面板配置(可以在建立服务前修改service.bat档案的JAVA_HOME变数来指定初始的JVM,该JAVA面板的所有配置项都是从service.bat档案初始化的。)startup.bat启动所使用的JAVA配置可以通过修改catalina.bat 与setclasspath.bat 档案里的JAVA_HOME与JRE_HOME变数来指定,也可以直接在电脑的高阶属性里面新增

rem Guess CATALINA_HOME if not defined

set CURRENT_DIR=%cd%

新增下面一句指定tomcat的安装目录。

set CATALINA_HOME=D:\apache-tomcat-7.0.29

if not "%CATALINA_HOME%" == "" goto gotHome

set CATALINA_HOME=%cd%

如果你需要把服务设定为开机自启动,可以加下面这句

sc config %SERVICE_NAME% start= auto

echo The service '%SERVICE_NAME%' has been installed.

执行命令列cmd,可以只用services.msc命令检视当前的服务会发现还没有Apache Tomcat 7,进入tomcat 的bin目录,执行service.bat install 安装服务然后再使用services.msc检视服务就多了Apache Tomcat 7这样问题就解决了!

杰克逊的who is it的mv讲的是什么故事?

那个MV是说MJ去他女朋友的办公室里等她 结果发现很多男人的名片 原来他的女朋友是一个间谍 交际花 总是变换身份和外表 在不同的男人中间周旋 MJ很伤心 最后自己乘坐直升飞机离开

谁有好用的Java使用redis的封装的示例

电脑安装Redis,然后通过JRedis(jar包)下的JRedisredis=newJRedis(address,port)就可以 *** 作了,比连线资料库还简单,如果是windows的话建议装虚拟机器用linux安装redis,其他的只要你懂redis,用java *** 作redis太简单了

秦朝的时候的韩国是现在的那里?

战国韩国 现在河南许昌、郑州一带! 战国七雄之一,起源于三家分晋:春秋末年,晋国大夫赵襄子、魏献子和韩宣子于公元前433年先行暗杀智伯,然后再将晋的领地瓜分,成为三个诸侯国。后世历史学家将韩、魏、赵三国与秦、楚、燕、齐合称战国七雄。初都阳翟(今河南省许昌市禹州),灭郑国后迁新郑(今河南郑州新郑)。

麻烦采纳,谢谢!

浴池里的泡澡池的防水怎样做的

建议您选择东方雨虹的防水产品和标准化施工团队,东方雨虹是国内最优质的防水上市企业

PMB-741 d性体(SBS)改性沥青防水卷材

“雨虹”d性体(SBS)改性沥青防水卷材以苯乙烯-丁二烯-苯乙烯(SBS)热塑性d性体改性沥青做浸渍和涂盖材料,以聚酯毡、玻纤毡和玻纤增强聚酯毡为胎基,上表面覆以聚乙烯膜、细砂或矿物片料等隔离材料所制成的可以卷曲的片状防水材料。

【产品型号】

公称厚度/mm

3

4

5

胎基型别

PY

PY

PY

上表面材料

PE

S

M

PE

S

M

PE

S

M

下表面材料

PE

PE、S

PE

PE、S

PE

PE、S

面积/(㎡/卷)

10

10

7.5

【特点】

长丝聚酯胎卷材:

1、长丝聚酯胎体和SBS改性沥青两种高效能材料的组合,为综合性能优异的高效能档次防水卷材;

2、可形成高强度防水层,抵抗压力水能力强;

3、耐硌破、耐撕裂、耐疲劳,耐腐蚀、耐霉菌、耐候性好;

4、抗拉强度高,延伸率大,对基层收缩、变形、开裂的适应能力强;

5、优良的耐高低温效能,冷热地区均适用;

6、施工效能好:热熔法粘结,一年四季均可施工,且热接缝,可靠耐久。

【适用范围】

1、各种工业与民用建筑屋面工程的防水

2、工业与民用建筑地下工程的防水、防潮以及室内游泳池、消防水池等的构筑物防水;

3、地铁、隧道、混凝土铺筑路面的桥面、污水处理场、垃圾掩埋场等市政工程防水;

4、水渠、水池等水利设施防水。

5、地下工程防水宜采用表面隔离材料为细砂的防水卷材。

SAM-920自粘橡胶沥青防水卷材

雨虹牌SAM-920自粘橡胶沥青防水卷材是以SBS等合成橡胶、增粘剂及优质道路石油沥青等配制成的自粘橡胶沥青为基料,以强韧的高密度聚乙烯膜(PE)、耐高低温优异的聚酯膜(PET)作为上表面材料(或无膜),可剥离的涂矽隔离纸为下表面防粘隔离材料制成的无胎自粘防水卷材。

【产品规格】

厚度

上表面材料

1.2mm

1.5mm

2.0mm

聚乙烯膜(PE)

宽度1000mm

宽度1000mm

宽度1000mm

聚酯膜(PET)

宽度1000mm

宽度1000mm

宽度1000mm

双面自粘(D)

宽度1000mm

宽度1000mm

宽度1000mm

【产品特点】

1、该规格卷材粘附于基层,初粘性强,5℃以上不需借助于加热装置即可粘结牢固,具安全性、环保性和便捷性;

2、该规格卷材具有优异的低温柔韧性和延伸性,对基层伸缩或开裂变形适应性强;

3、该规格卷材对钉杆穿透或外界应力作用下产生的细微裂纹具有优异的自愈合性;

4、该规格卷材具有持久的粘结性,与基层粘结不脱落、不窜水,搭接缝处自身粘结与卷材同寿命;

5、该规格卷材由自粘橡胶沥青和HDPE(或PET)构成,具优异的耐水性。

6、HDPE的产品抗穿刺、抗冲击性强,有独特的持续抗撕裂性强,易于现场裁剪。

【适用范围】

1、明挖法地铁、隧道、水池、水库、水渠等工程防水;

2、不准动用明火的工程防水;

3、 双面自粘卷材仅适用于辅助防水,也可用于两种不相容材料防水层交接处的粘结和密封。

PBC-328非固化橡胶沥青防水涂料

“雨虹”牌PBC-328非固化橡胶沥青防水涂料是由优质石油沥青、功能性高分子改性剂及特种新增剂经科学优化混合而成,在应用状态下保持粘性膏状体的防水材料。该产品具有突出的蠕变效能,并由此带来自愈合、防渗漏、防窜水、抗疲劳、耐老化、无应力等突出应用特性。

【产品特点】

1、以橡胶、沥青和助剂混合制成的,不固化、不成膜、无溶剂的蠕变型膏状防水材料;

2、良好的可施工性:喷涂、刮涂施工,一次性成型,无需干燥时间;

3、优异的基层适应性;

4、涂料不固化,d塑效能优异;

5、突出的自愈合能力;

6、优异的抗老化性、低温柔性、耐腐蚀性;

7、无溶剂,安全环保。

【适用范围】

1、适用于基层起伏较大、应力较大的基层和可预见发生和经常性发生形变的部位;特别适用于不能使用明火施工、机械施工和冷粘剂施工的工程等;

2、适用于混凝土、彩钢等屋面、地下、水池及隧道等防水工程。

【参考用量】:涂料每施工1mm厚,理论用量为:1.3Kg/㎡~1.4Kg/㎡。

SPU-301单组分聚氨酯防水涂料

“雨虹”牌SPU-301单组分聚氨酯防水涂料是一种单组分溼气固化型防水涂料,施工后与空气中的溼气反应固化成柔韧、耐久、无缝的d性防水涂层。

【产品特点】

1、单一组分,现场即开即用,施工方便;

2、拉伸强度大,延伸率高,d性好,耐高、低温效能好,对基层收缩、开裂、变形的适应性强;

3、粘接力强,在符合要求的各种基面上不需要涂刷基层处理剂;

4、一次厚涂,涂膜密实,无针孔、气泡;

5、化学反应成膜,耐长期水浸蚀、耐腐蚀、耐霉变、耐疲劳;

6、环保效能好,采用高沸点溶剂,不含苯、煤焦油成分,施工时无需另加溶剂;

7、冷施工, *** 作方便。

【适用范围】

地下工程、厕浴间、厨房、阳台、水池、停车场等防水工程;也适用于非暴露屋面防水工程。

【参考用量】

每毫米厚涂膜,涂料用量约为1.6 kg/㎡-1.8kg/㎡。

【施工要点】

1、 基层应平整、坚固、干燥,无尖锐角,无油污,无灰尘等,做好防水节点处理。

2、搅拌均匀后,用橡胶或金属刮板均匀刮涂,宜分2~3遍涂布。第一遍应薄涂,以封闭基层孔隙,上一层涂膜实干后可下道施工,一般间隔24h(低温环境干燥时间适当延长),下道涂刷方向与上道涂刷方向垂直。

3、按相关规范或设计要求进行保护隔离层施工。

【注意事项】

1、施工温度5℃~35℃,雨雪环境不得施工。

2、应在通风良好的条件下施工,施工人员应做好相应的安全防护措施。

3、直接使用,无需新增任何稀释剂,若需新增,请咨询相应的技术人员。

4、施工请按照东方雨虹提供的指导说明进行。为获得更多资讯,施工前请阅读产品安全说明书。

SPU—303饮用水工程专用聚氨酯防水涂料

雨虹牌SPU-303饮用水工程专用单组分聚氨酯防水涂料是专为生活用水输配装置及对水质

要求高的水池、水渠等工程开发的,以异氰酸酯、聚醚多元醇等为主要原料,配以各种助剂、

填料经特殊科学配方和聚合反应工艺制成的。通过聚氨酯预聚体中的-NCO端基与空气中的溼气接触后进行的化学反应,在基层表面形成坚韧、柔软和无接缝的橡胶防水膜。

【产品特点】

1、纯聚氨酯,单一组分即开即用

2、具有拉伸强度高、延伸率高、对基层伸缩变形和开裂抵抗能力强

3、化学反应成膜,对耐长期水侵蚀。耐腐蚀、耐霉变、耐疲劳

4、完全固化的涂膜对水质无危害

5、涂料中无三苯,环保兼科学配方和工艺,且卫生安全效能符合卫生部相关规范要求

6、冷施工, *** 作方便

【适用范围】

1、饮用水池、水渠、鱼池、游泳池等对水质要求高的工程。

2、生活饮用水输配水装置的防水和防护等工程。

3、也可用于长期浸水的地下工程、厕浴间、阳台、非外露屋面工程的防水、防潮。

【参考用量】

每毫米厚的涂膜,涂料使用量约为:1.7Kg/㎡。

水立顿环保聚氨酯防水涂料

水立顿环保聚氨酯防水涂料特点:

◆拉伸强度大,d性好,耐高低温效能好,对基层收缩、开裂、变形的适应性强;

◆单一组分,现场即开即用,施工方便;

◆粘结力强,在符合要求的各种基面上不需要涂刷基层处理剂;

◆溼气固化成膜,耐长期水浸蚀、耐腐蚀、耐霉变。

适用范围

长期浸水部位例如游泳池、人造喷泉、水池、水渠的防水。 厨房、卫生间、楼地面、阳台、非外露的屋面的防水;

技术引数

产品性状:黑色粘稠液体

参考用量:1.6~1.9Kg/m2

干燥时间:表干约8小时,实干约16小时

施工工具:橡胶或塑料刮板

产品规格:15kg/桶

大哥,人的命真的是天注定的吗?

命运,就像程式的启动或是道路的选择一样

启动一个程式之后,程式会按著一个路径进行

走上一条路之后,路会朝一个方向行进

但在这当中,选择权是在自己的身上的

而且自己随时都可以调整路径或方向的

只是有时需要很大的努力才能调整出新的路径或方向

人在落地之际,有些选择已经被注定,像是父母、家庭等

还有许多重大的缘份也是早就启动好,注定要相识的

但是,这种缘份今生要如何继续下去

是决定在自己的身上

命运的路径,很多时候都是在瞬间转向的

譬如,一个人如果闹寂寞,就上夜店

那他可能会遇到一个不是那么洁身自爱的人

两人甚至生了小孩,这样命就开始往不好的方向转了

反之,如果寂寞时,他用别的比较健康的方式来面对

那就不会启动一份比较不好的缘

这种原理其实是很科学的

一般的算命,准确率通常有限

因为对于未来的事,自己还是握有启动或决定权

还有,一般说,人有了宗教信仰之后,命就算不准了

这是因为在原本的命运程式中,已经加入了超越于个人力量

所以如果仅用个人过去或前世的事件来推断未来

就很容易失准了

我介绍一下Redis分布式锁吧:

一、定义redis实现分布式锁的接口

[java] view plain copy print?

package com.iol.common.util.concurrent.locks  

  

import java.io.Serializable  

  

/** 

 * Description: 定义redis实现分布式锁的算法<br /> 

 * This program is protected by copyright IOL_SMALL_TAIL.<br /> 

 * Program Name: IOL_SMALL_TAIL<br /> 

 * Date: 2015年11月8日 

 * 

 * @author 王鑫 

 * @version 1.0 

 */  

public interface IRedisLockArithmetic extends Serializable {  

    /** 

     * 加锁算法<br /> 

     * @param key 

     * @return 

     */  

    public boolean lock(String key)  

      

    /** 

     * 解锁算法<br /> 

     * @param key 

     * @return 

     */  

    public boolean unLock(String key)  

}

二、redis分布式锁基础算法实现

[java] view plain copy print?

package com.iol.common.util.concurrent.locks.arithmetic  

  

import org.slf4j.Logger  

import org.slf4j.LoggerFactory  

  

import com.iol.common.util.concurrent.locks.IRedisComponent  

import com.iol.common.util.concurrent.locks.IRedisLockArithmetic  

  

/** 

 * Description: redis分布式锁基础算法实现<br /> 

 * This program is protected by copyright IOL_SMALL_TAIL.<br /> 

 * Program Name: IOL_SMALL_TAIL<br /> 

 * Date: 2015年11月9日 

 * 

 * @author 王鑫 

 * @version 1.0 

 */  

public class RedisLockBaseArithmetic implements IRedisLockArithmetic {  

    /** 

     *serialVersionUID 

     */  

    private static final long serialVersionUID = -8333946071502606883L  

      

    private Logger logger = LoggerFactory.getLogger(RedisLockBaseArithmetic.class)  

  

    /** 

     * redis *** 作方法 

     */  

    private IRedisComponent redisComp  

      

    /** 

     * 超时时间,以毫秒为单位<br /> 

     * 默认为5分钟 

     */  

    private long overtime = 5 * 60 * 1000L  

      

    /** 

     * 休眠时长,以毫秒为单位<br /> 

     * 默认为100毫秒 

     */  

    private long sleeptime = 100L  

      

    /** 

     * 当前时间 

     */  

    private long currentLockTime  

      

    /** 

     * @param redisComp the redisComp to set 

     */  

    public void setRedisComp(IRedisComponent redisComp) {  

        this.redisComp = redisComp  

    }  

  

    /** 

     * @param overtime the overtime to set 

     */  

    public void setOvertime(long overtime) {  

        this.overtime = overtime  

    }  

  

    /** 

     * @param sleeptime the sleeptime to set 

     */  

    public void setSleeptime(long sleeptime) {  

        this.sleeptime = sleeptime  

    }  

  

    /* (non-Javadoc) 

     * @see com.iol.common.util.concurrent.locks.IRedisLockArithmetic#lock(java.lang.String, java.lang.Long) 

     */  

    @Override  

    public boolean lock(String key) {  

        while(true) {  

            // 当前加锁时间  

            currentLockTime = System.currentTimeMillis()  

              

            if(redisComp.setIfAbsent(key, currentLockTime)) {  

                // 获取锁成功  

                logger.debug("直接获取锁{key: {}, currentLockTime: {}}", key, currentLockTime)  

                return true  

            } else {  

                //其他线程占用了锁  

                logger.debug("检测到锁被占用{key: {}, currentLockTime: {}}", key, currentLockTime)  

                Long otherLockTime = redisComp.get(key)  

                if(otherLockTime == null) {  

                    // 其他系统释放了锁  

                    // 立刻重新尝试加锁  

                    logger.debug("检测到锁被释放{key: {}, currentLockTime: {}}", key, currentLockTime)  

                    continue  

                } else {  

                    if(currentLockTime - otherLockTime >= overtime) {  

                        //锁超时  

                        //尝试更新锁  

                        logger.debug("检测到锁超时{key: {}, currentLockTime: {}, otherLockTime: {}}", key, currentLockTime, otherLockTime)  

                        Long otherLockTime2 = redisComp.getAndSet(key, currentLockTime)  

                        if(otherLockTime2 == null || otherLockTime.equals(otherLockTime2)) {  

                            logger.debug("获取到超时锁{key: {}, currentLockTime: {}, otherLockTime: {}, otherLockTime2: {}}", key, currentLockTime, otherLockTime, otherLockTime2)  

                            return true  

                        } else {  

                            sleep()  

                            //重新尝试加锁  

                            logger.debug("重新尝试加锁{key: {}, currentLockTime: {}}", key, currentLockTime)  

                            continue  

                        }  

                    } else {  

                        //锁未超时  

                        sleep()  

                        //重新尝试加锁  

                        logger.debug("重新尝试加锁{key: {}, currentLockTime: {}}", key, currentLockTime)  

                        continue  

                    }  

                }  

            }  

        }  

    }  

  

    /* (non-Javadoc) 

     * @see com.iol.common.util.concurrent.locks.IRedisLockArithmetic#unLock(java.lang.String) 

     */  

    @Override  

    public boolean unLock(String key) {  

        logger.debug("解锁{key: {}}", key)  

        redisComp.delete(key)  

        return true  

    }  

      

    /** 

     * 休眠<br /> 

     * @param sleeptime 

     */  

    private void sleep() {  

        try {  

            Thread.sleep(sleeptime)  

        } catch (InterruptedException e) {  

            throw new LockException("线程异常中断", e)  

        }  

    }  

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11553287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存