Redis学习笔记

来源:互联网 发布:rar解压软件下载官方 编辑:程序博客网 时间:2024/04/30 05:33

redis学习笔记(1)

最近由于项目的实际需要,对当前比较流行的两款“缓存数据库”进行了学习,主要了解了redis数据库。

  1. redis和mc的对比
  2. redis的安装
  3. redis的基础命令使用
  4. java-redis

redis和mc的对比


1、redis可以用于数据的长期存储(这点是基于它的“持久化”技术),同时也可以用来做数据缓存;但是mc(memcached)只能用于数据缓存;
2、redis能够存储种类繁多的数据类型,比如: strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries。而mc只能存储strings, objects;
3、两者都可以用于集群环境,存储数据都采用key-value策略,都是Nosql数据库典型代表。

redis的安装


Created with Raphaël 2.1.0开始下载安装包(wget)解压安装包(tar zxvf)进入解压压缩包(cd)进行安装测试(make test)根据需要(yum install tcl)make install指定安装路径bin(cp ...redis.conf ./redis.conf ./)结束

redis的基础命令使用


目前主要学习了redis的string操作、list链表操作

String

这里写图片描述

List

这里写图片描述

java-redis


在实际运用中,不仅仅需要学会在终端通过敲入命令的方式学习redis,还需要知道redis的API,用于编程,下面是我写的一个初级demo,主要测试上述两种数据结构:

package cn.com.redis;import java.util.List;import java.util.Set;import redis.clients.jedis.Jedis;public class RedisJava {    public static void main(String[] args) {        // 连接redis服务        Jedis jedis = new Jedis("192.168.239.128", 6379);        // 查看服务是否运行        System.out.println("Server is running: " + jedis.ping());        redisStringAndLsit(jedis);        selectDB(jedis);        flushRedis(jedis);    }    private static void flushRedis(Jedis jedis) {        System.out.println("清库前,redis数据库的所有key:");        Set<String> allKeys = jedis.keys("*");        for(String temp : allKeys){            System.out.println(temp);        }        System.out.println(jedis.flushDB());        System.out.println("清库后,redis数据库的所有key的长度为:");        Set<String> allKeysEnd = jedis.keys("*");        System.out.println(allKeysEnd);        System.out.println(allKeysEnd.size());    }    private static void selectDB(Jedis jedis) {        String selector = jedis.select(1);        if(selector.equals("OK")){            System.out.println("选库成功!");        }        Set<String> keys = jedis.keys("*");        System.out.println(keys.size());        //跳转的数据库没有key则跳到默认数据库,并移动一个key        if(keys.size()==0){            if(jedis.select(0).equals("OK")){                jedis.move(jedis.keys("*").iterator().next(), 1);            }           }        jedis.select(1);        Set<String> keysEnd = jedis.keys("*");        System.out.println("数据库1中key的数量最后是:"+keysEnd.size());        System.out.println("被转移过来的key分别是: ");        for(String temp : keysEnd){            System.out.println(temp);        }    }    private static void redisStringAndLsit(Jedis jedis) {        jedis.set("name", "wuran");        // linklist        jedis.rpush("character", "a");        jedis.rpush("character", "b");        jedis.rpush("character", "c");        jedis.rpush("character", "d");        List<String> values=jedis.lrange("character", 0, -1);        for(String temp : values){            System.out.println(temp);        }        System.out.println("*********keys * **********");        Set<String> keySets = jedis.keys("*");        for(String key : keySets){            System.out.println(key);        }        System.out.println(jedis.get("name"));        //体现缓存数据库        System.out.println("before expire: "+jedis.ttl("name"));        jedis.expire("name", 30);        for(int i=0;i<30;i++){            System.out.println(jedis.ttl("name"));            if(i==10){                jedis.persist("name");                System.out.println("when i is 10: "+jedis.ttl("name"));                break;            }        }        System.out.println(jedis.get("name"));    }}
0 0
原创粉丝点击