redis安装和启动就不说了

一.准备工作

1.redis -cli -p 6379

2.eclipse中新建项目,并导入jedis相关包

3.测试jedis连通性

二.Jedis常用API (哈希)

1.基础的key  value

存中文,取数据时在eclipse控制台会显示中文,但是在linux上回出现中文乱码问题(其实不是乱码,只是不是我们存的中文显示)。使用redis-cli  --raw进入 就不会出现上述问题

2.Hash:总体来说KV模式不变,但V是一个键值对

(1)hset
描述:将哈希表key中的域field的值设为value。如果key不存在,一个新的哈希表被创建并进行HSET操作。如果域field已经存在于哈希表中,旧值将被覆盖。
参数:key field value
返回值:如果field是哈希表中的一个新建域,并且值设置成功,返回1。如果哈希表中域field已经存在且旧值已被新值覆盖,返回0

jedis.hset("key1", "field1", "field1-value");
jedis.hset("key1", "field2", "field2-value");
String content=jedis.hget("key1","field1");//hget的使用
System.out.println(content);

(2)hmset
描述:同时将多个field - value(域-值)对设置到哈希表key中。此命令会覆盖哈希表中已存在的域。如果key不存在,一个空哈希表被创建并执行HMSET操作。
参数:key field value [field value ...]
返回值:如果命令执行成功,返回OK。当key不是哈希表(hash)类型时,返回一个错误。

 Map map = new HashMap();
map.put("field1", "field1-value");
map.put("field2", "field2-value");
jedis.hmset("key1", map);
List<String> list = jedis.hmget("key1","field1");//hmget
System.out.println(list);

(3)返回 key 指定的哈希集中所有的字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍

(4)hdel

(5)hlen

(6)hexists

(7)hkeys/hvals

hgetall同时返回哈希表里的键和值,hkeys返回哈希表里的键,hvals返回哈希表里的值

(8)hincrby|hincrbyfloat

(9)hsetnx

将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。

若域 field 已经存在,该操作无效。

如果 key 不存在,一个新哈希表被创建并执行 hsetnx 命令。

返回值:
设置成功,返回 1
如果给定域已经存在且没有操作被执行,返回 0

三.Redis事务

Discard 取消事务

Exec 执行

multi 开启事务

unwatch 取消 watch命令对所有key的监视

watch 监视一个或多个key,如果在事务执行之前,这个key被其他命令改动,那么事务将被打断

redis事务阶段:

(1)开启:以multi开启一个事务

(2)入队

(3)执行:由exec命令触发事务

redis事务不保证原子性:redis同一个事务中如果一条命令执行失败,其后的命令仍会被执行,没有回滚

四.Jedis主从复制

public class TestMS {
public static void main(String[] args) {
Jedis jedis_M = new Jedis("192.168.172.128",6379);
Jedis jedis_S = new Jedis("192.168.172.128",6380);
System.out.println(jedis_M.ping());
System.out.println(jedis_S.ping());
jedis_S.slaveof("192.168.172.128",6379); jedis_M.set("class","1122V2"); String result = jedis_S.get("class");
System.out.println(result);
}
}

如果出现NULL,别慌。因为内存速度太快了,等一会在执行一次就好了

五.JedisPool

package com.test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; public class JedisPoolUtil
{
private static volatile JedisPool jedisPool = null; private JedisPoolUtil(){} public static JedisPool getJedisPoolInstance()
{
if(null == jedisPool)
{
synchronized (JedisPoolUtil.class)
{
if(null == jedisPool)
{
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxActive(1000);
poolConfig.setMaxIdle(32);
poolConfig.setMaxWait(100*1000);
poolConfig.setTestOnBorrow(true); jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379);
}
}
}
return jedisPool;
} public static void release(JedisPool jedisPool,Jedis jedis)
{
if(null != jedis)
{
jedisPool.returnResourceObject(jedis);
}
} }
package com.test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool; public class TestPool { public static void main(String[] args) {
JedisPool jedisPool = JedisPoolUtil.getJedisPoolInstance();
JedisPool jedisPool2 = JedisPoolUtil.getJedisPoolInstance(); System.out.println(jedisPool == jedisPool2); Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.set("aa", "bb");
} catch (Exception e) {
e.printStackTrace();
} finally {
JedisPoolUtil.release(jedisPool, jedis);
}
}
}

最新文章

  1. js 爱恨情仇说 this
  2. Python教程[廖雪峰],主要是实践
  3. 转载-python学习笔记之输入输出功能读取和写入数据
  4. js中__proto__(内部原型)和prototype(构造器原型)的关系
  5. JSP——九大内置对象和其四大作用域
  6. 【IE6的疯狂之五】div遮盖select的解决方案
  7. python使用mongodb
  8. 混合高斯模型(Mixtures of Gaussians)和EM算法
  9. C#无限分级实现,前端WEB页面接收,后台提供层级Json数据
  10. C# 链接MySql数据库
  11. 进入django
  12. React Native实现微信分享
  13. Pycharm---新建文件时 自动添加作者时间等信息
  14. 2-Thirteenth Scrum Meeting-10151213
  15. Solr记录-solr内核与索引
  16. 使用HttpGet协议与正则表达实现桌面版的糗事百科
  17. 在js中保存数据
  18. 【转】嵌入式Linux文件系统启动脚本及分析
  19. CentOS6.7 通过yum在线安装MySQL5.7
  20. Apache 访问控制

热门文章

  1. forms 组件的功能和使用
  2. SaaS上云工具包为企业应用构筑上云之梯
  3. DNS域名服务器的搭建
  4. CF1016F 【Road Projects】
  5. RabbitMQ-----的基本安装
  6. java_monitor
  7. js滚动页面到固定位置进行操作
  8. SQL比较时间查询语句
  9. linux jps命令
  10. 1.3 React 组件