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

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,打开终端,然后键入以下命令:

$sudo apt-get update
$sudo apt-get install redis-server

启动 Redis

$redis-server

检查Redis是否在工作?

$redis-cli -p 端口 -a 密码

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

redis 127.0.0.1:6379>

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

redis 127.0.0.1:6379> ping 
PONG

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

修改redis密码

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

requirepass mima

重启

/etc/init.d/reids-server restart

Redis简单使用 set和get

set name wangnian
ok
get name
"wangnian"

 查看所有配置

 config get *

用java jedis  client调用

导入项目依赖

<!--redis客户端-->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.8.1</version>
</dependency>

代码案例

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类了。

博客地址:http://my.oschina.net/wangnian

redis实现分布锁地址:http://my.oschina.net/wangnian/blog/668830


转载于:https://my.oschina.net/wangnian/blog/668722

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值