文档章节

Redis入门Jedis

javahongxi
 javahongxi
发布于 2017/08/26 00:24
字数 1005
阅读 31
收藏 0

一、Windows版redis配置与启动

Redis官方并未提供windows版本,我们可以在github上下载windows版,https://github.com/MSOpenTech/redis/releases

下面是redis.windows.conf 

 

#是否作为守护进程运行
daemonize no
#Redis 默认监听端口
port 6479
#客户端闲置多少秒后,断开连接
timeout 300
#日志显示级别
loglevel verbose
#指定日志输出的文件名,也可指定到标准输出端口
logfile redis.log
#设置数据库的数量,默认最大是16,默认连接的数据库是0,可以通过select N 来连接不同的数据库
databases 32
#Dump持久化策略
#当有一条Keys 数据被改变是,900 秒刷新到disk 一次
#save 900 1
#当有10 条Keys 数据被改变时,300 秒刷新到disk 一次
save 300 100
#当有1w 条keys 数据被改变时,60 秒刷新到disk 一次
save 6000 10000
#当dump     .rdb 数据库的时候是否压缩数据对象
rdbcompression yes
#dump 持久化数据保存的文件名
dbfilename dump.rdb
###########    Replication #####################
#Redis的主从配置,配置slaveof则实例作为从服务器
#slaveof 192.168.0.105 6379
#主服务器连接密码
# masterauth <master-password>
############## 安全性 ###########
#设置连接密码
requirepass admin
############### LIMITS ##############
#最大客户端连接数
# maxclients 128
#最大内存使用率
# maxmemory <bytes>
########## APPEND ONLY MODE #########
#是否开启日志功能
appendonly no
# AOF持久化策略
#appendfsync always
#appendfsync everysec
#appendfsync no
################ VIRTUAL MEMORY ###########
#是否开启VM 功能
#vm-enabled no
# vm-enabled yes
#vm-swap-file logs/redis.swap
#vm-max-memory 0
#vm-page-size 32
#vm-pages 134217728
#vm-max-threads 4

 

 二、Jedis

Jedis是Redis的Java客户端,提供了java对于redis的常用操作。

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.8.0</version>
</dependency>

 

 

import redis.clients.jedis.Jedis;

import java.util.*;

/**
 * Created by shenhongxi on 2016/1/21.
 */
public class RedisTest {

    public static void main(String[] args) {
        Jedis jedis = new Jedis("127.0.0.1", 6479);
        jedis.auth("admin"); // password
        String key = "t";
        jedis.set(key, "javared");
        System.out.println(jedis.get(key));
        jedis.append(key, "&wely");
        System.out.println(jedis.get(key));
        jedis.del(key);
        System.out.println(jedis.get(key));

        Jedis jedis2 = new Jedis("127.0.0.1", 6379);
        jedis2.auth("admin");
        jedis2.set(key, "wely.com");
        System.out.println(jedis2.get(key));

        // 批量插入
        jedis.mset("name", "hongxi", "age", "23", "qq", "1037256085");
        jedis.incr("age");
        System.out.println(jedis.get("name") + "_" + jedis.get("age") + "_" + jedis.get("qq"));

        // map
        Map<String, String> user = new HashMap<String, String>();
        user.put("name", "hongxi");
        user.put("age", "23");
        user.put("qq", "1037256085");
        String hmKey = "user";
        jedis.hmset(hmKey, user);
        List<String> list = jedis.hmget(hmKey, "name", "age", "qq");
        System.out.println(list);
        jedis.hdel(hmKey, "name");
        list = jedis.hmget(hmKey, "name", "age", "qq");
        System.out.println(list);
        System.out.println(jedis.hlen(hmKey));
        System.out.println(jedis.exists(hmKey));
        System.out.println(jedis.hkeys(hmKey));
        System.out.println(jedis.hvals(hmKey));
        Iterator<String> iter=jedis.hkeys("user").iterator();
        while (iter.hasNext()){
            String _key = iter.next();
            System.out.println(_key + ":" + jedis.hmget("user", _key));
        }

        // list
        String listKey = "Java Framework";
        jedis.del(listKey);
        System.out.println(jedis.lrange(listKey, 0, -1));
        jedis.lpush(listKey, "spring");
        jedis.lpush(listKey, "restEasy");
        jedis.lpush(listKey, "mybatis");
        System.out.println(jedis.lrange(listKey, 0, -1));
        jedis.del(listKey);
        jedis.rpush(listKey, "spring");
        jedis.rpush(listKey, "restEasy");
        jedis.rpush(listKey, "mybatis");
        System.out.println(jedis.lrange(listKey, 0, -1));

        // set
        String setKey = "lang";
        Long size = jedis.sadd(setKey, "hongxi", "wely", "norip");
        System.out.println(size);
        jedis.srem(setKey, "norip");
        Set<String> set = jedis.smembers(setKey);
        System.out.println(set);
        System.out.println(jedis.sismember(setKey, "hongxi"));
        System.out.println(jedis.srandmember(setKey));
        System.out.println(jedis.scard(setKey));

        // 排序
        jedis.del("a");
        jedis.rpush("a", "1");
        jedis.lpush("a","6");
        jedis.lpush("a", "3");
        jedis.lpush("a", "9");
        System.out.println(jedis.lrange("a", 0, -1)); // [9, 3, 6, 1]
        System.out.println(jedis.sort("a")); // [1, 3, 6, 9]
        System.out.println(jedis.lrange("a",0,-1)); // [9, 3, 6, 1]
    }
}

 

三、JedisPool

    Jedis“连接池”在通常情况下可以有效的提高应用的通信能力,并且这是一种良好的设计模式。Jedis的连接池设计基于apache commons-pool原生库,仅作了简单的封装。连接池基本参数说明这里不加赘述,下面讲述JedisPool编程设计。

public class PoolTestMain {
	public static void main(String[] args) {
		JedisPoolConfig config = new JedisPoolConfig();
		config.setMaxActive(32);
		config.setMaxIdle(6);
		config.setMinIdle(0);
		config.setMaxWait(15000);
		config.setMinEvictableIdleTimeMillis(300000);
		config.setSoftMinEvictableIdleTimeMillis(-1);
		config.setNumTestsPerEvictionRun(3);
		config.setTestOnBorrow(false);
		config.setTestOnReturn(false);
		config.setTestWhileIdle(false);
		config.setTimeBetweenEvictionRunsMillis(60000);//一分钟
		config.setWhenExhaustedAction((byte)1);
		JedisPool pool = new JedisPool(config,"127.0.0.1",6379,15000,"0123456",12);
		Jedis client = pool.getResource();//从pool中获取资源
		try{
			client.select(0);
			client.set("k1", "v1");
			System.out.println(client.get("k1"));
		}catch(Exception e){
                        pool.returnBrokenResource(client);
			e.printStackTrace();
		}finally{
			pool.returnResource(client);//向连接池“归还”资源,千万不要忘记。
		}

	}

}

 spring配置JedisPool:

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName">

	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
		<property name="maxActive" value="32"></property>
		<property name="maxIdle" value="6"></property>
		<property name="maxWait" value="15000"></property>
		<property name="minEvictableIdleTimeMillis" value="300000"></property>
		<property name="numTestsPerEvictionRun" value="3"></property>
		<property name="timeBetweenEvictionRunsMillis" value="60000"></property>
		<property name="whenExhaustedAction" value="1"></property>
	</bean>
	<bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">
		<!-- config -->
		<constructor-arg ref="jedisPoolConfig"></constructor-arg>
		<!-- host -->
		<constructor-arg value="127.0.0.1"></constructor-arg>
		<!-- port -->
		<constructor-arg value="6379"></constructor-arg>
		<!-- timeout -->
		<constructor-arg value="15000"></constructor-arg>
		<!-- password -->
		<constructor-arg value="0123456"></constructor-arg>
		<!-- database index -->
		<constructor-arg value="12"></constructor-arg>		
	</bean>
</beans>

     上述代码,事实上存在设计上尚有改进之处,spring-data中对redis的支持,在编程级别更加轻便。

© 著作权归作者所有

javahongxi
粉丝 168
博文 259
码字总数 779422
作品 0
朝阳
程序员
私信 提问
redis入门笔记

1.Jedis是什么? Jedis是redis的java版本的客户端实现。 2.Jedis操作步骤如下: 1->获取Jedis实例需要从JedisPool中获取; 2->用完Jedis实例需要返还给JedisPool; 3->如果Jedis在使用过程中...

婷瑄
2016/07/12
48
0
Redis入门 -- Redis安装与配置

Redis入门 -- Redis安装与配置 Redis的安装 Redis的安装,我这里使用的是虚拟机。 为了让主机和虚拟机之间可以顺利通信,按照以下步骤进行: 记得修改redis.conf的bind参数! 记得修改redis...

sunhaiyu
2018/11/04
0
0
Redis快速了解及入门

Redis是什么? 是一个高性能的key-value数据库; Redis快速入门: Redis是绿色版的,直接解压出来就可以用。 下载地址:https://github.com/dmajkic/redis/downloads。 比如,我放在D:devel...

swayer
2016/05/10
112
0
redis初级入门,整合spring应用

linux下相关redis命令 tar zxf redis-2.7.0.tar.gz cd redis-2.7.0 make 安装完毕。 mkdir /usr/local/redis cd src cp redis-server redis-benchmark redis-cli ../redis.conf /usr/local/r......

Love吩祢I伴
2015/12/24
93
0
Redis的Java入门实践 (转)

1, Redis Hello World 的例子 这里用的包是Jedis。下载地址https://github.com/xetorthio/jedis/downloads 把jar包引入工程,打开redis的服务器(redis下载及安装见初步理解Redis及其安装配置...

java_T
2013/01/24
490
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
5
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部