Redis基础

来源:互联网 发布:宝软网软件下载 编辑:程序博客网 时间:2024/06/07 19:31

声明:本文参考网上资料整理而成,只为梳理记录。如有错误望不吝赐教。在此拜谢!持续完善修改中…

随时参考

教程

定义

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 —[摘自百度百科]

应用场景

  • 取最新N个数据的操作
  • 排行榜应用,取TOP N操作
  • 需要精准设定过期时间的应用
  • 计数器应用
  • Uniq操作,获取某段时间所有数据排重值
  • 实时系统,反垃圾系统
  • Pub/Sub构建实时消息系统
  • 构建队列系统
  • 缓存
    参考链接

服务搭建

下载服务并启动

Redis下载地址:http://redis.io/download
linux环境

$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz$ tar xzf redis-2.8.17.tar.gz$ cd redis-2.8.17$ make$ make test$ redis-server  ../redis.conf   //注意 redis.conf 的路径

以上:redis.conf 为 Redis 的自定义配置文件

客户端链接

启动客户端
$ redis-cli

客户端链接远程 Redis 服务
$ redis-cli -h host -p port -a password

检查 Redis 服务是否正常

redis> pingPONG

将 [key]= name 和 [value] = Mikayla 放入 redis 库中

redis> set name MikaylaOKredis> get name"jiu"

make 过程常见的错误

  • 异常1
    make[2]: cc: Command not found
    异常原因:没有安装 gcc
    解决方案:yum install gcc-c++

  • 异常2
    zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory
    异常原因:一些编译依赖或原来编译遗留出现的问题
    解决方案:make distclean。清理一下,然后再make

在make成功以后,需要make test。在make test出现异常
- 异常3
couldn't execute "tclsh8.5": no such file or directory
异常原因:没有安装 tcl
解决方案:yum install -y tcl

Redis 数据类型

表格展示

数据类型 说明 存储大小 命令格式 放值 取值 string 字符串 一个键最大能存储512MB SET GET hash 哈希 2的32次方 -1 键值对(40多亿) HMSET HGETALL list 列表 2的32次方-1元素(4294967295,每个列表可存储40多亿) lpush lrange set 集合 2的32次方-1(4294967295,每个集合可存储40多亿个成员) sadd key member sadd smembers zset 有序集合 zadd key score member zadd ZRANGEBYSCORE

针对以上数据类型,做以下简单练习:
[备注 * 每种类型可以和对应的 Redis 命令的实现做对比]

public class TestRedis {    public static void main(String[] args) {        Jedis jedis = new Jedis("Redis 服务 IP 地址");        System.out.println("链接成功");        System.out.println("服务正在运行:" + jedis.ping());        //string 字符串        jedis.set("redis_string", "mikayla_redis_string");        System.out.println("redis 存储key:【redis_string】的字符串为:" + jedis.get("redis_string"));        //map 哈希        Map userMap = new HashMap();        userMap.put("username", "runoob");        userMap.put("points", "200");        userMap.put("password", "runoob");        jedis.hmset("redis_map:1", userMap);        System.out.println("redis 存储key:【redis_map:1】的字符串为:" + JsonUtil.toJson(jedis.hgetAll("redis_map:1")));        //list 列表        jedis.lpush("redis_site-list", "Runoob");        jedis.lpush("redis_site-list", "Google");        jedis.lpush("redis_site-list", "Taobao");        List<String> list = jedis.lrange("redis_site-list", 0 ,2);        for(int i=0; i<list.size(); i++) {            System.out.println("列表项为: "+list.get(i));        }        //set 集合        jedis.sadd("redis_set", "set2", "set5", "set3");        System.out.println("redis_set>>> "+ JsonUtil.toJson(jedis.smembers("redis_set")));        //zset 有序集合 TODO:实现失败,待补充        /*jedis.zadd("redis_zset", 0, "redis");        jedis.zadd("redis_zset", 0, "mongodb");        jedis.zadd("redis_zset", 0, "rabitmq");        System.out.println("redis_zset>>> " + JsonUtil.toJson(jedis.zrangeByLex("redis_zset", 0, 5)));*/        // 获取数据并输出        Set<String> keys = jedis.keys("*");        Iterator<String> it=keys.iterator() ;        while(it.hasNext()){            String key = it.next();            System.out.println(key);        }    }}

Redis 常用命令

查看库中所有的 key

redis> keys *

清空 Redis 数据

1、使用redis客户端链接远程redis服务
2、使用命令
redis> flushdb 删除当前库中的所有key
redis> flushall 删除所有数据库中的key

String 类型的存放

redis> set name MikaylaOKredis> get name"Mikayla"

Hash 类型的存放

redis> hmset user:1 username Mikayla password 123OKredis> hgetall user:11)"username"2)"Mikayla"3)"password"4)"123"redis> 

List 类型的存放

redis> lpush listname redis(integer) 1redis> lpush listname mongodb(integer) 2redis> lpush listname mysql(integer) 3redis> lrange listname 0 101)"redis"2)"mongodb"3)"mysql"redis> 

Set 类型的存放

无序集合,元素不重复

redis> sadd setname redis(integer) 1redis> sadd setname mongodb(integer) 1redis> sadd setname mysql(integer) 1redis> sadd setname redis(integer) 0redis> smembers setname1)"mysql"2)"mongodb"3)"redis"redis> 

Zset 类型的存放

有序集合,元素不重复

redis> sadd zsetname 0 redis(integer) 1redis> sadd zsetname 0 mongodb(integer) 1redis> sadd zsetname 0 mysql(integer) 1redis> sadd zsetname 0 redis(integer) 0redis> smembers setname1)"redis"2)"mongodb"3)"mysql"redis> 
原创粉丝点击