前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis简单介绍和安装以及Jedis客户端使用

Redis简单介绍和安装以及Jedis客户端使用

作者头像
王念博客
发布2019-07-24 10:30:19
4980
发布2019-07-24 10:30:19
举报
文章被收录于专栏:王念博客

Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。

Redis从它的许多竞争继承来的三个主要特点:

  1. Redis数据库完全在内存中,使用磁盘仅用于持久性。
  2. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。
  3. Redis可以将数据复制到任意数量的从服务器。

Redis 优势

  1. 异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。
  2. 支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好。
  3. 操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。
  4. 多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等。

Redis安装

Ubuntu上安装Redis,打开终端,然后键入以下命令:

代码语言:javascript
复制
$sudo apt-get update
$sudo apt-get install redis-server

启动 Redis

代码语言:javascript
复制
$redis-server

检查Redis是否在工作?

代码语言:javascript
复制
$redis-cli -p 端口 -a 密码

这将打开一个Redis提示,如下图所示:

代码语言:javascript
复制
redis 127.0.0.1:6379>

上面的提示127.0.0.1是本机的IP地址,6379为Redis服务器运行的端口。现在输入PING命令,如下图所示。

代码语言:javascript
复制
redis 127.0.0.1:6379> ping 
PONG

这说明你已经成功地安装Redis在您的机器上。

修改redis密码

找到redis.conf 加上一行配置,可以设置运行访问的ip或者访问密码。

代码语言:javascript
复制
requirepass mima

重启

代码语言:javascript
复制
/etc/init.d/reids-server restart

Redis简单使用 set和get

代码语言:javascript
复制
set name wangnian
ok
代码语言:javascript
复制
get name
"wangnian"

查看所有配置

代码语言:javascript
复制
 config get *

用java jedis client调用

导入项目依赖

代码语言:javascript
复制
<!--redis客户端-->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.8.1</version>
</dependency>

代码案例

代码语言:javascript
复制
package redis;

import com.alibaba.fastjson.JSON;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Created by wangnian on 2016/5/2.
 * 博客地址:http://my.oschina.net/wangnian
 */
public class JedisTest {
    @Test
    public void test() throws InterruptedException {
        Jedis jedis=new Jedis("127.0.0.1",6379);
        jedis.auth("mima");

         //key-value
        jedis.set("name","张三");//添加值
        String x= jedis.get("name");  //查询值
        System.out.println(x);
        jedis.setex("name",2,"李四");  //设置有效期
        for(int i=1;i<4;i++){
            System.out.println("等待"+i+"秒");
            Thread.sleep(1000);
        }
        String x1= jedis.get("name"); //查询值
        System.out.println(x1);
        jedis.mset("name","张三","name1","王五");//同时设置多个
        String x2= jedis.get("name1");  //查询值
        System.out.println(x2);
        jedis.append("name1",",你好啊");   //追加内容
        String x3= jedis.get("name1");//查询值
        System.out.println(x3);
        List<String> list= jedis.mget("name","name1");//同时取多个key
        System.out.println(list.size());

        //使用hashs存储 是一个String类型的field和value的
        jedis.hset("student","name","张三");
        String x4= jedis.hget("student","name");  //查询值
        System.out.println(x4);
        Map<String,String> map=new HashMap<String, String>(); //批量存储值
        map.put("name","张三");
        map.put("age","22");
        map.put("sex","男");
        jedis.hmset("student1",map);
        String x5= jedis.hget("student1","sex"); //查询值
        System.out.println(x5);
        List<String> list1= jedis.hmget("student1","name","age","sex");//查询多个指
        Map<String,String>  map1=jedis.hgetAll("student1");//取key全部

        //lists链表结构
        jedis.lpush("list","张三1");//在list首部添加元素
        jedis.lpush("list","张三2");
        jedis.rpush("list","张三3");//在list尾部添加元素
        jedis.rpush("list","张三4");
        List<String> list2= jedis.lrange("list",0,0);//获取list指定区间的元素
        System.out.println(JSON.toJSON(list2));
        jedis.lpop("list");//删除首部元素
        jedis.rpop("list");//删除尾部元素
        jedis.llen("list");//获取长度


        //sets数据结构 用来存储一个没有重复元素的集合
        jedis.sadd("set1","wangnian");
        jedis.sadd("set1","wangnian1");
        jedis.srem("set1","wangnian1");//移除value为wangnian1的元素
        Set<String> set= jedis.smembers("set1");
        System.out.println(set.size());

        //sorted sets 是sets的升级版,增加了一个排序的熟悉
        jedis.zadd("set2",1,"我是第一个元素");
        jedis.zadd("set2",2,"我是第二个元素");
        Set<String> set1=jedis.zrange("set2",0,0);
        System.out.println(set1.size());
        for (String str:set1){
            System.out.println(str);
        }
        Set<String> set2=jedis.zrevrange("set2",0,0);
        System.out.println(set2.size());
        for (String str:set2){
            System.out.println(str);
        }
    }
}

其他的api都应该差不多,所以就不写test类了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档