java使用Redis1--安装与简单使用
环境:
CentOS6.4,Redis3.0.3
一、Redis安装(需要安装gcc)
官网http://download.redis.io/releases/redis-3.0.3.tar.gz上下载redis安装包,存放到/usr目录下
# tar zxf redis-3.0.3.tar.gz
# mv redis-3.0.3 redis
# rm redis-3.0.3.tar.gz
# cd redis
# make
添加环境变量
vim /etc/profile
PATH的尾部添加 :/usr/redis-1/src
# source /etc/profile
二、Redis启动
# cd /usr/redis/src
创建一个测试目录
# mkdir test
# cd test
复制一份配置文件
# cp ../redis.conf redis6378.conf
修改端口
# vim redis6378.conf
port 6378
保存
# redis-server
由于配置了环境变量,可以直接在任何地方使用redis-server,而不再需要/usr/redis/src/redis-server的方式
redis-server启用一个默认配置的数据库在6379端口,想要使用配置文件,可以在redis-server命令后,添加配置文件名称
# redis-server redis6378.conf
三.Redis连接
# redis-cli
默认连接6379端口
# redis-cli -p 6378
连接指定端口
127.0.0.1:6378> set a abc
OK
127.0.0.1:6378> get a
"abc"
四、java使用redis基本操作
- package redis;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- import redis.clients.jedis.Pipeline;
- public class TestRedis {
- private Jedis jedis;
- @Before
- public void setup() {
- jedis = new Jedis("192.168.77.135", 6378);
- }
- @After
- public void setDone() {
- if (jedis != null) {
- jedis.disconnect();
- }
- }
- /**
- * redis存储字符串
- */
- @Test
- public void testString() {
- // -----添加数据----------
- jedis.set("name", "xinxin");// 向key-->name中放入了value-->xinxin
- System.out.println(jedis.get("name"));// 执行结果:xinxin
- jedis.append("name", " is my lover"); // 拼接
- System.out.println(jedis.get("name"));
- jedis.del("name"); // 删除某个键
- System.out.println(jedis.get("name"));
- // 设置多个键值对
- jedis.mset("name", "liuling", "age", "23", "qq", "476777389");
- jedis.incr("age"); // 进行加1操作
- System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
- }
- /**
- * redis操作Map
- */
- @Test
- public void testMap() {
- jedis.del("user");
- // -----添加数据----------
- Map<String, String> map = new HashMap<String, String>();
- map.put("name", "xinxin");
- map.put("age", "22");
- map.put("qq", "123456");
- jedis.hmset("user", map);
- // 取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
- // 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
- List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
- System.out.println(rsmap);
- // 删除map中的某个键值
- jedis.hdel("user", "age");
- System.out.println(jedis.hmget("user", "age")); // 因为删除了,所以返回的是null
- System.out.println(jedis.hlen("user")); // 返回key为user的键中存放的值的个数2
- System.out.println(jedis.exists("user"));// 是否存在key为user的记录 返回true
- System.out.println(jedis.hkeys("user"));// 返回map对象中的所有key
- System.out.println(jedis.hvals("user"));// 返回map对象中的所有value
- Iterator<String> iter = jedis.hkeys("user").iterator();
- while (iter.hasNext()) {
- String key = iter.next();
- System.out.println(key + ":" + jedis.hmget("user", key));
- }
- }
- /**
- * jedis操作List
- */
- @Test
- public void testList() {
- // 开始前,先移除所有的内容
- jedis.del("java framework");
- System.out.println(jedis.lrange("java framework", 0, -1));
- // 先向key java framework中存放三条数据
- jedis.lpush("java framework", "spring");
- jedis.lpush("java framework", "struts");
- jedis.lpush("java framework", "hibernate");
- // 再取出所有数据jedis.lrange是按范围取出,
- // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
- System.out.println(jedis.lrange("java framework", 0, -1));
- jedis.del("java framework");
- jedis.rpush("java framework", "spring");
- jedis.rpush("java framework", "struts");
- jedis.rpush("java framework", "hibernate");
- System.out.println(jedis.lrange("java framework", 0, -1));
- }
- /**
- * jedis操作Set
- */
- @Test
- public void testSet() {
- // 添加
- jedis.del("user");
- jedis.sadd("user", "liuling");
- jedis.sadd("user", "xinxin");
- jedis.sadd("user", "ling");
- jedis.sadd("user", "zhangxinxin");
- jedis.sadd("user", "who");
- // 移除noname
- jedis.srem("user", "who");
- System.out.println(jedis.smembers("user"));// 获取所有加入的value
- System.out.println(jedis.sismember("user", "who"));// 判断 who
- // 是否是user集合的元素
- System.out.println(jedis.srandmember("user"));
- System.out.println(jedis.scard("user"));// 返回集合的元素个数
- }
- /**
- * redis排序
- */
- @Test
- public void testSort() throws InterruptedException {
- // jedis 排序
- // 注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
- 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));
- }
- /**
- * redis连接池
- */
- @Test
- public void testRedisPool() {
- RedisUtil.getJedis().set("newname", "中文测试");
- System.out.println(RedisUtil.getJedis().get("newname"));
- }
- /**
- * redis管道命令
- */
- @Test
- public void testPipeline() {
- int count = 100;
- jedis = new Jedis("192.168.77.135", 6379);
- Pipeline pl = jedis.pipelined();
- for (int i = 0; i < count; i++) {
- pl.incr("testKey2");
- }
- pl.sync();
- System.out.println(jedis.get("testKey2"));
- }
- static class RedisUtil {
- // Redis服务器IP
- private static String ADDR = "192.168.77.135";
- // Redis的端口号
- private static int PORT = 6379;
- // 访问密码
- // private static String AUTH = "admin";
- // 可用连接实例的最大数目,默认值为8;
- // 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
- private static int MAX_ACTIVE = 1024;
- // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
- private static int MAX_IDLE = 200;
- // 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
- private static int MAX_WAIT = 10000;
- private static int TIMEOUT = 10000;
- // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
- private static boolean TEST_ON_BORROW = true;
- private static JedisPool jedisPool = null;
- /**
- * 初始化Redis连接池
- */
- static {
- try {
- JedisPoolConfig config = new JedisPoolConfig();
- config.setMaxTotal(MAX_ACTIVE);
- config.setMaxIdle(MAX_IDLE);
- config.setMaxWaitMillis(MAX_WAIT);
- config.setTestOnBorrow(TEST_ON_BORROW);
- jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 获取Jedis实例
- *
- * @return
- */
- public synchronized static Jedis getJedis() {
- try {
- if (jedisPool != null) {
- Jedis resource = jedisPool.getResource();
- return resource;
- } else {
- return null;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * 释放jedis资源
- *
- * @param jedis
- */
- public static void returnResource(final Jedis jedis) {
- if (jedis != null) {
- jedisPool.returnResource(jedis);
- }
- }
- }
- }
java使用Redis1--安装与简单使用的更多相关文章
- 【RabbitMQ】RabbitMQ在Windows的安装和简单的使用
版本说明 使用当前版本:3.5.4 安装与启动 在官网上下载其Server二进制安装包,在Windows上的安装时简单的,与一般软件没什么区别. 安装前会提示你,还需要安装Erlang,并打开下载页面 ...
- Java JDK的安装以及环境变量的配置
安装并配置完Android SDK之后,本想着可以做个简单的APP应用了,只是依然提示我“请确认Java JDK是否安装”类似的报错,于是又进行了Java JDK的安装以及环境变量的配置. 1.下载地 ...
- hadoop环境安装及简单Map-Reduce示例
说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:<hadoop权威指南--第二版(中文 ...
- Thrift的安装和简单演示样例
本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述 ...
- [hadoop系列]Pig的安装和简单演示样例
inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...
- 用java从0生成一个简单的excel
用java从0生成一个简单的excel 目标 用代码实现对一个excel的基础操作,包括创建,插入文字,(好像就这些了),生成的excel可以用wps打开,如果直接用c++的文件流会生成假的xls表格 ...
- eclemma怎么安装 eclemma的安装与简单使用图文教程(附下载)
来自于:https://www.jb51.net/softjc/628026.html 一. 安装 有两种安装方法 1. 下载安装(推荐) 地址: http://sourceforge.net/pro ...
- redis的安装与简单使用
redis的安装与简单使用: Redis简介: redis的应用场景: 1.关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据 ...
- 【ZooKeeper】ZooKeeper安装及简单操作
ZooKeeper介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...
- Spark简介安装和简单例子
Spark简介安装和简单例子 Spark简介 Spark是一种快速.通用.可扩展的大数据分析引擎,目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark S ...
随机推荐
- cudnn 安装
ubuntu 下载地址 https://developer.nvidia.com/rdp/cudnn-download 安装教程 http://docs.nvidia.com/deeplearning ...
- 2015年传智播客JavaEE 第168期就业班视频教程11-导入配置文件
资源文件放在Source Folder目录下面,这个目录同样会编译到classes目录下 web.xml的 <listener> <listener-class>org.spr ...
- 裸函数naked解析
先分享一个案例: #include <stdio.h> __declspec(naked) void Test() { int x; x = ; __asm ret; } int main ...
- jekins测试环境自动化
最近搭建测试环境自动化,之前都是用机器猫.机器猫的流程大概是这样,开发打包上传到svn,给测试一个svn地址,测试到机器猫上传文件,然后再运行启动. 为了减去开发打包这个环节,所以专用jenkins. ...
- Java核心技术-集合
在实现方法时,选择不同的数据结构会导致其实现风格以及性能存在着很大的差异,例如: 需要快速地搜索成千上万个有序的数据项吗?需要快速地在有序的序列中插入和删除元素吗?需要建立键与值之间的关联吗? 1 J ...
- sqlserver查询存储过程的创建时间及最后修改时间
select [name] ,create_date ,modify_date FROM sys.all_objects where type_desc = N'SQL_STORED_PROCE ...
- SVG与HTML、JavaScript的三种调用方式
一.在HTMl中访问SVG的DOM Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHig ...
- Java面向对象理解_代码块_继承_多态_抽象_接口
面线对象: /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生 ...
- 模拟在table中移动鼠标,高亮显示鼠标所在行,固定表头
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...
- alertView 上添加textField
- (void)showTextFieldUIAlertView { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@ ...