环境:

  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基本操作

  1. package redis;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Map;
  7.  
  8. import org.junit.After;
  9. import org.junit.Before;
  10. import org.junit.Test;
  11.  
  12. import redis.clients.jedis.Jedis;
  13. import redis.clients.jedis.JedisPool;
  14. import redis.clients.jedis.JedisPoolConfig;
  15. import redis.clients.jedis.Pipeline;
  16.  
  17. public class TestRedis {
  18. private Jedis jedis;
  19.  
  20. @Before
  21. public void setup() {
  22. jedis = new Jedis("192.168.77.135", 6378);
  23. }
  24.  
  25. @After
  26. public void setDone() {
  27. if (jedis != null) {
  28. jedis.disconnect();
  29. }
  30. }
  31.  
  32. /**
  33. * redis存储字符串
  34. */
  35. @Test
  36. public void testString() {
  37. // -----添加数据----------
  38. jedis.set("name", "xinxin");// 向key-->name中放入了value-->xinxin
  39. System.out.println(jedis.get("name"));// 执行结果:xinxin
  40.  
  41. jedis.append("name", " is my lover"); // 拼接
  42. System.out.println(jedis.get("name"));
  43.  
  44. jedis.del("name"); // 删除某个键
  45. System.out.println(jedis.get("name"));
  46. // 设置多个键值对
  47. jedis.mset("name", "liuling", "age", "23", "qq", "476777389");
  48. jedis.incr("age"); // 进行加1操作
  49. System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
  50. }
  51.  
  52. /**
  53. * redis操作Map
  54. */
  55. @Test
  56. public void testMap() {
  57. jedis.del("user");
  58. // -----添加数据----------
  59. Map<String, String> map = new HashMap<String, String>();
  60. map.put("name", "xinxin");
  61. map.put("age", "22");
  62. map.put("qq", "123456");
  63. jedis.hmset("user", map);
  64. // 取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
  65. // 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
  66. List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
  67. System.out.println(rsmap);
  68.  
  69. // 删除map中的某个键值
  70. jedis.hdel("user", "age");
  71. System.out.println(jedis.hmget("user", "age")); // 因为删除了,所以返回的是null
  72. System.out.println(jedis.hlen("user")); // 返回key为user的键中存放的值的个数2
  73. System.out.println(jedis.exists("user"));// 是否存在key为user的记录 返回true
  74. System.out.println(jedis.hkeys("user"));// 返回map对象中的所有key
  75. System.out.println(jedis.hvals("user"));// 返回map对象中的所有value
  76.  
  77. Iterator<String> iter = jedis.hkeys("user").iterator();
  78. while (iter.hasNext()) {
  79. String key = iter.next();
  80. System.out.println(key + ":" + jedis.hmget("user", key));
  81. }
  82. }
  83.  
  84. /**
  85. * jedis操作List
  86. */
  87. @Test
  88. public void testList() {
  89. // 开始前,先移除所有的内容
  90. jedis.del("java framework");
  91. System.out.println(jedis.lrange("java framework", 0, -1));
  92. // 先向key java framework中存放三条数据
  93. jedis.lpush("java framework", "spring");
  94. jedis.lpush("java framework", "struts");
  95. jedis.lpush("java framework", "hibernate");
  96. // 再取出所有数据jedis.lrange是按范围取出,
  97. // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
  98. System.out.println(jedis.lrange("java framework", 0, -1));
  99.  
  100. jedis.del("java framework");
  101. jedis.rpush("java framework", "spring");
  102. jedis.rpush("java framework", "struts");
  103. jedis.rpush("java framework", "hibernate");
  104. System.out.println(jedis.lrange("java framework", 0, -1));
  105. }
  106.  
  107. /**
  108. * jedis操作Set
  109. */
  110. @Test
  111. public void testSet() {
  112. // 添加
  113. jedis.del("user");
  114. jedis.sadd("user", "liuling");
  115. jedis.sadd("user", "xinxin");
  116. jedis.sadd("user", "ling");
  117. jedis.sadd("user", "zhangxinxin");
  118. jedis.sadd("user", "who");
  119. // 移除noname
  120. jedis.srem("user", "who");
  121. System.out.println(jedis.smembers("user"));// 获取所有加入的value
  122. System.out.println(jedis.sismember("user", "who"));// 判断 who
  123. // 是否是user集合的元素
  124. System.out.println(jedis.srandmember("user"));
  125. System.out.println(jedis.scard("user"));// 返回集合的元素个数
  126. }
  127.  
  128. /**
  129. * redis排序
  130. */
  131. @Test
  132. public void testSort() throws InterruptedException {
  133. // jedis 排序
  134. // 注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
  135. jedis.del("a");// 先清除数据,再加入数据进行测试
  136. jedis.rpush("a", "1");
  137. jedis.lpush("a", "6");
  138. jedis.lpush("a", "3");
  139. jedis.lpush("a", "9");
  140. System.out.println(jedis.lrange("a", 0, -1));// [9, 3, 6, 1]
  141. System.out.println(jedis.sort("a")); // [1, 3, 6, 9] //输入排序后结果
  142. System.out.println(jedis.lrange("a", 0, -1));
  143. }
  144.  
  145. /**
  146. * redis连接池
  147. */
  148. @Test
  149. public void testRedisPool() {
  150. RedisUtil.getJedis().set("newname", "中文测试");
  151. System.out.println(RedisUtil.getJedis().get("newname"));
  152. }
  153.  
  154. /**
  155. * redis管道命令
  156. */
  157. @Test
  158. public void testPipeline() {
  159. int count = 100;
  160. jedis = new Jedis("192.168.77.135", 6379);
  161. Pipeline pl = jedis.pipelined();
  162. for (int i = 0; i < count; i++) {
  163. pl.incr("testKey2");
  164. }
  165. pl.sync();
  166.  
  167. System.out.println(jedis.get("testKey2"));
  168. }
  169.  
  170. static class RedisUtil {
  171. // Redis服务器IP
  172. private static String ADDR = "192.168.77.135";
  173. // Redis的端口号
  174. private static int PORT = 6379;
  175. // 访问密码
  176. // private static String AUTH = "admin";
  177. // 可用连接实例的最大数目,默认值为8;
  178. // 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
  179. private static int MAX_ACTIVE = 1024;
  180. // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
  181. private static int MAX_IDLE = 200;
  182. // 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
  183. private static int MAX_WAIT = 10000;
  184. private static int TIMEOUT = 10000;
  185. // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
  186. private static boolean TEST_ON_BORROW = true;
  187. private static JedisPool jedisPool = null;
  188.  
  189. /**
  190. * 初始化Redis连接池
  191. */
  192. static {
  193. try {
  194. JedisPoolConfig config = new JedisPoolConfig();
  195. config.setMaxTotal(MAX_ACTIVE);
  196. config.setMaxIdle(MAX_IDLE);
  197. config.setMaxWaitMillis(MAX_WAIT);
  198. config.setTestOnBorrow(TEST_ON_BORROW);
  199. jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);
  200. } catch (Exception e) {
  201. e.printStackTrace();
  202. }
  203. }
  204.  
  205. /**
  206. * 获取Jedis实例
  207. *
  208. * @return
  209. */
  210. public synchronized static Jedis getJedis() {
  211. try {
  212. if (jedisPool != null) {
  213. Jedis resource = jedisPool.getResource();
  214. return resource;
  215. } else {
  216. return null;
  217. }
  218. } catch (Exception e) {
  219. e.printStackTrace();
  220. return null;
  221. }
  222. }
  223.  
  224. /**
  225. * 释放jedis资源
  226. *
  227. * @param jedis
  228. */
  229. public static void returnResource(final Jedis jedis) {
  230. if (jedis != null) {
  231. jedisPool.returnResource(jedis);
  232. }
  233. }
  234. }
  235. }

java使用Redis1--安装与简单使用的更多相关文章

  1. 【RabbitMQ】RabbitMQ在Windows的安装和简单的使用

    版本说明 使用当前版本:3.5.4 安装与启动 在官网上下载其Server二进制安装包,在Windows上的安装时简单的,与一般软件没什么区别. 安装前会提示你,还需要安装Erlang,并打开下载页面 ...

  2. Java JDK的安装以及环境变量的配置

    安装并配置完Android SDK之后,本想着可以做个简单的APP应用了,只是依然提示我“请确认Java JDK是否安装”类似的报错,于是又进行了Java JDK的安装以及环境变量的配置. 1.下载地 ...

  3. hadoop环境安装及简单Map-Reduce示例

    说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:<hadoop权威指南--第二版(中文 ...

  4. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  5. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  6. 用java从0生成一个简单的excel

    用java从0生成一个简单的excel 目标 用代码实现对一个excel的基础操作,包括创建,插入文字,(好像就这些了),生成的excel可以用wps打开,如果直接用c++的文件流会生成假的xls表格 ...

  7. eclemma怎么安装 eclemma的安装与简单使用图文教程(附下载)

    来自于:https://www.jb51.net/softjc/628026.html 一. 安装 有两种安装方法 1. 下载安装(推荐) 地址: http://sourceforge.net/pro ...

  8. redis的安装与简单使用

    redis的安装与简单使用: Redis简介: redis的应用场景: 1.关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据     ...

  9. 【ZooKeeper】ZooKeeper安装及简单操作

    ZooKeeper介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...

  10. Spark简介安装和简单例子

    Spark简介安装和简单例子 Spark简介 Spark是一种快速.通用.可扩展的大数据分析引擎,目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark S ...

随机推荐

  1. cudnn 安装

    ubuntu 下载地址 https://developer.nvidia.com/rdp/cudnn-download 安装教程 http://docs.nvidia.com/deeplearning ...

  2. 2015年传智播客JavaEE 第168期就业班视频教程11-导入配置文件

    资源文件放在Source Folder目录下面,这个目录同样会编译到classes目录下 web.xml的 <listener> <listener-class>org.spr ...

  3. 裸函数naked解析

    先分享一个案例: #include <stdio.h> __declspec(naked) void Test() { int x; x = ; __asm ret; } int main ...

  4. jekins测试环境自动化

    最近搭建测试环境自动化,之前都是用机器猫.机器猫的流程大概是这样,开发打包上传到svn,给测试一个svn地址,测试到机器猫上传文件,然后再运行启动. 为了减去开发打包这个环节,所以专用jenkins. ...

  5. Java核心技术-集合

    在实现方法时,选择不同的数据结构会导致其实现风格以及性能存在着很大的差异,例如: 需要快速地搜索成千上万个有序的数据项吗?需要快速地在有序的序列中插入和删除元素吗?需要建立键与值之间的关联吗? 1 J ...

  6. sqlserver查询存储过程的创建时间及最后修改时间

    select  [name] ,create_date ,modify_date FROM  sys.all_objects where  type_desc = N'SQL_STORED_PROCE ...

  7. SVG与HTML、JavaScript的三种调用方式

    一.在HTMl中访问SVG的DOM Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHig ...

  8. Java面向对象理解_代码块_继承_多态_抽象_接口

    面线对象: /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生 ...

  9. 模拟在table中移动鼠标,高亮显示鼠标所在行,固定表头

    <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...

  10. alertView 上添加textField

    - (void)showTextFieldUIAlertView {     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@ ...