Redis安装及Java客户端的使用浅析(jedis)

时间:2020-11-30 17:27:00

注:转载请注明出处,谢谢O(∩_∩)O~

概述

    概述内容摘抄自官网:

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. Redis 内置了 复制(replication), LUA脚本(Lua scripting), LRU驱动事件(LRU eviction), 事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel) 和自动 分区(Cluster)提供高可用性(high availability).

    你可以对这些类型执行 原子操作 , 列如: 字符串(strings)的append 命令; 散列(hashes)的hincrby命令; 列表(lists)的lpush命令; 集合(sets)计算交集sinter命令, 计算并集union命令 和 计算差集sdiff命令; 或者 在有序集合(sorted sets)里面获取成员的最高排名zrangebyscore命令.

    为了实现其卓越的性能, Redis 采用运行在 内存中的数据集工作方式. 根据您的使用情况, 您可以每隔一定时间将 数据集导出到磁盘 , 或者 追加到命令日志中. 您也可以关闭持久化功能,将Redis作为一个高效的网络的缓存数据功能使用.

    Redis 同样支持 主从复制(能自动重连和网络断开时自动重新同步),并且第一次同步是快速的非阻塞试的同步. 其他功能包括:

  •     事务(Transactions)
  •     订阅分发(Pub/Sub)
  •     LUA脚本(Lua scripting)
  •     过期自动删除key
  •     内存回收
  •     自动故障转移

    您可以使用 大多数的编程语言 来使用Redis.

    Redis 使用 ANSI C 编写并且能在绝大Linux系统上运行,基于BSD协议,对OS X没有外部依赖. 我们支持Linux 和 OS X两种系统的开发和测试,我们推荐使用Linux部署. Redis 可以像SmartOS一样运行在Solaris系统中, 但是我们会最大力度的支持它. 官方不支持Windos版本的Redis,但微软开发和维护着支持win-64 的Redis版本

    OK,以上都是说过场,下面开始实战。

Redis的安装、运行

    server版本的redis安装请移步:把redis安装到ubuntu-14.04.1-server

    推荐在linux下使用Redis,windows版本的也有,不过不是官方维护的,由微软的技术团队负责维护和支持(当然跟官方的一样有权威性!)。下面将介绍在ubuntu下如何安装,其他linux版本的其实也大同小异了。

    目前redis最新版本是3.0.7,具体更新等内容请移至官网查看,输入以下命令:

 
 
  1. $ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
  2. $ tar xzf redis-3.0.7.tar.gz
  3. $ cd redis-3.0.7
  4. $ make

    第一个命令是下载软件包,第二个事解压缩,第三个是进入redis目录,第四个是编译(c开发的不想java的拿来即用,不同平台编译方式会略有差异,所以不会给直接能运行的文件,当然,也给不出(;`O´)o)。

    使用以下命令运行redis:

 
 
  1. redis-server

    经过以上几步,redis服务就已经开始运行了,此处采用的不含配置的启动方式,也可以使用以下命令使用含配置的启动方式:

 
 
  1. redis-server redis.conf

    配置的具体参数可以通过编辑redis.conf修改,至于如何修改,官网也有相关文档,此处只坐简单的演示,就不多说。

    命令行运行启动服务的命令会进入redis启动成功的界面,我们可以在命令后面加上“&”符号让命令在后台运行,以便更方便的操作(当然,如果你使用的带桌面的ubuntu,你完全可以再打开一个终端来执行后面的操作)

    运行客户端即可开始使用redis,输入以下命令进入客户端(同时也能检查redis是否正常运行):

 
 
  1. $redis-cli

    如果配置了需要密码登陆的,需要使用如下命令:

 
 
  1. redis-cli -a password //连接其他主机添加参数 -h host -p port

    命令行输入“ping”测试。

    然后可以往里面添加数据了,下面添加一个String:

 
 
  1. set name anxpp

    成功操作命令行会提示“OK”(java客户端的set函数也是这样返回的),接下来就获取设置的这个值:

 
 
  1. get name

    当然,命令行会输出刚刚set进去的值“anxpp”,这部分暂时就介绍这么多了,如需了解更多,还请移步官网O(∩_∩)O~。

    关闭redis:redis-cli shutdown

    退出客户端:quit

使用Java操作Redis

    相关的jar包支持

    以下皆为当前最新版本,点击可下载。

    commons-pool2-2.4.2.jarCommons Pool组件提供了一整套用于实现对象池化的框架,以及若干种各具特色的对象池实现,可以有效地减少处理对象池化时的工作量,为其它重要的工作留下更多的精力和时间。

     jedis-2.8.1.jar:redis客户端支持jar包。

    连接并获取操作对象

 
 
  1. public class RedisDemo {
  2. JedisPool pool;
  3. Jedis jedis;
  4. public RedisDemo() {
  5. pool = new JedisPool(new JedisPoolConfig(), "192.168.40.129");
  6. jedis = pool.getResource();
  7. // jedis.auth("password");//如果配置了密码
  8. }
  9. }

    下面的各种方法,都会添加到上面这个RedisDemo类中,并且一些说明都会写入注释,所以就不会额外的解释了。

    Redis存储初级的字符串

 
 
  1. /**
  2. * 添加一个新值,若这个key已经存在,则替换掉之前的值
  3. * @param key 值的key
  4. * @param value 要添加的值
  5. * @return 添加成功时会返回“OK”,否则返回错误信息
  6. */
  7. public String setString(String key,String value){
  8. return jedis.set(key, value);
  9. }
  10. /**
  11. * 获取值
  12. * @param key 要获取的值对应的key
  13. * @return 若key存在,返回对应的值,若不存在,返回null
  14. */
  15. public String getString(String key){
  16. return jedis.get(key);
  17. }
  18. /**
  19. * 修改数据
  20. * @param key 要修改的值的key
  21. * @param appendStr 要添加的内容
  22. * @return 返回当前key对应String的长度
  23. * 若key不存在,就新增值,若存在,就添加到已存在的String的后面
  24. */
  25. public long appendString(String key,String appendStr){
  26. jedis.del(key);
  27. return jedis.append(key, appendStr);
  28. }
  29. /**
  30. * 删除String
  31. * @param key 要删除的值的key
  32. * @return 返回删除的个数
  33. * 若key不存在,就返回0,表示一个都没有删除
  34. */
  35. public long delString(String key){
  36. return jedis.del(key);
  37. }

更多阅读

    Redis中的String