java+查看redis_redis简介及其基本操作,java访问redis

Redis

Redis是采用C语言编写,内存数据存储。

Redis读写速度异常快速,适合做应用缓存

Redis支持字符串、哈希、列表、集合、有序集合结构存储

Redis支持持久化操作(RDB和AOF机制)

Redis可以和Java、PHP、Python等语言结合访问

Redis操作命令

字符串操作(string)

set key value //设置一组key value

get key //获取value值

mset key value key value //设置多组key value

strlen key //查看value字符数量

incr key //将value值加1

incrby key n //将value值加n

decr key //将value值减1

decrby key n //将value值减n

append key value //字符串拼接

key操作

keys * //查看所有key

del key //删除key

type key //查看value类型

expire key n //指定失效时间(秒)

哈希操作(hash)

hset key field value //设置一组字段名和字段值

hmset key field1 value1 field2 value2... //设置多组字段名和字段值

hget key field //获取字段值

hmget key field1 field2 //获取多个字段值

hkeys key //查看哈希包含的字段名

hlen key //查看哈希包含的字段数量

hdel key field //删除哈希中的某个字段

列表操作(list)

lpush key value //向列表头部插入一个元素

rpush key value //向列表尾部插入一个元素

llen key //列表元素数量

lrange key 0 -1 //获取所有元素

lpop //弹出列表头部元素

集合操作

sadd key member //添加元素

srem key member //删除元素

smembers key //返回所有元素

scard key //返回集合元素数量

srandmember key n //随机返回n个

sunion key1 key2 //key1并key2

sinter key1 key2 //key1交key2

sdiff key1 key2 //key1差key2

有序集合操作

zadd key score member //添加元素

zcard key //集合元素数量

zrange key 0 -1 //由小到大顺序查看所有元素

zrevrange key 0 -1 //由大到小顺序查看所有元素

zcount key min max //按分数统计元素数量

zrem key memeber //删除元素

Java访问Redis

基于jedis.jar访问

@Test

public void test1(){

Jedis jedis = new Jedis("localhost", 6379);

System.out.println(jedis.ping());

Set keys = jedis.keys("*");//keys *

for(String key:keys){

System.out.println(key+":"+jedis.type(key));

}

jedis.close();

}

@Test

public void test2(){

Jedis jedis = new Jedis("localhost", 6379);

//取string

String value1 = jedis.get("name");//get name

System.out.println("name="+value1);

//取hash

String value2 = jedis.hget("dept10", "dname");//hget dept10 dname

System.out.println("dname="+value2);

//获取hash所有字段值

Set fields = jedis.hkeys("dept20");

for(String f:fields){

System.out.println(f+":"+jedis.hget("dept20", f));

}

jedis.close();

}

@Test

public void test3(){

Map data = new HashMap<>();

data.put("no", "101");

data.put("name", "tom");

Jedis jedis = new Jedis("localhost", 6379);

jedis.hmset("mymap1", data);//存入map

Map map = jedis.hgetAll("mymap1");//获取map

System.out.println(map.get("no")+" "+map.get("name"));

jedis.close();

}

@Test

public void test4(){

Dept dept = new Dept();

dept.setDeptno(10);

dept.setDname("Java");

dept.setLoc("北京");

Jedis jedis = new Jedis("localhost", 6379);

jedis.set("dept".getBytes(), SerializableUtil.objectToBytes(dept));

jedis.close();

}

@Test

public void test5(){

Jedis jedis = new Jedis("localhost", 6379);

byte[] bytes = jedis.get("dept".getBytes());

Dept dept = (Dept)SerializableUtil.bytesToObject(bytes);

System.out.println(dept.getDeptno()+" "+dept.getDname()+" "+dept.getLoc());

jedis.close();

}

SerializableUtil.java

public class SerializableUtil {

public static Object bytesToObject(byte[] bytes){

ByteArrayInputStream input = null;

ObjectInputStream ois = null;

try{

input = new ByteArrayInputStream(bytes);

ois = new ObjectInputStream(input);

Object obj = ois.readObject();//反序列化将字节数组转成Object

return obj;

}catch(Exception ex){

ex.printStackTrace();

return null;

}finally{

try {

input.close();

} catch (IOException e) {

e.printStackTrace();

}

try {

ois.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

public static byte[] objectToBytes(Object obj){

ByteArrayOutputStream out = null;

ObjectOutputStream oos = null;

try{

out = new ByteArrayOutputStream();

oos = new ObjectOutputStream(out);

oos.writeObject(obj);//将obj序列化后写入out对象中

byte[] bytes = out.toByteArray();

return bytes;

}catch(Exception e){

e.printStackTrace();

return null;

}finally{

try {

out.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

oos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

基于SpringData-redis访问

引入spring-data-redis包、jedis、connection-pool包

在Spring配置文件定义RedisTemplate、JedisConnectionFactory组件

class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">

注入RedisTemplate测试

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations={"classpath:applicationContext.xml"})

public class TestRedisTemplate {

@Autowired

private RedisTemplate redisTemplate;

@Test

public void test1(){

redisTemplate.opsForValue().set("name", "XDL");

String value = (String)redisTemplate.opsForValue().get("name");

System.out.println(value);

}

@Test

public void test2(){

Dept dept = new Dept();

dept.setDeptno(20);

dept.setDname("XDL");

dept.setLoc("北京");

redisTemplate.opsForValue().set("dept", dept);

Dept d = (Dept)redisTemplate.opsForValue().get("dept");

System.out.println(d.getDeptno()+" "+d.getDname()+" "+d.getLoc());

}

}

Redis缓存使用

0add86c8d6fb564730c751b4cae14a1d.png

@Resource

private RedisTemplate redisTemplate;

@RequestMapping(value="/dept/get",method=RequestMethod.GET)

public Dept loadDept(@RequestParam("no")int id){

//查找Redis缓存,有返回

Dept dept = (Dept)redisTemplate.opsForValue().get("dept:"+id);

//Redis没有,调用deptDao查询数据库,并将结果放入缓存

if(dept == null){

System.out.println("从数据库查询加载数据");

dept = deptDao.findById(id);

redisTemplate.opsForValue().set("dept:"+id, dept);

}else{

System.out.println("从Redis缓存查询加载数据");

}

return dept;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值