redis安装

redis 中文官网:http://www.redis.cn/   

简介:

     Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

     Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010315日起,Redis的开发工作由VMware主持。从20135月开始,Redis的开发由Pivotal赞助。

特点:

   速度快

     Redis能读的速度是110000/s,写的速度是81000/s ,数据存在内存中  

  支持丰富数据类型  

      支持stringlistsetsorted sethash...

    原子性(支持事务)

      Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTIEXEC指令包起来。

   支持持久化

       edis提供了不同级别的持久化方式,一种是RDB,一种AOF

      RDB:在指定的时间间隔能对数据进行快照存储(隔一段时间,把内存里的数据转存在硬盘里的文件)

        AOF:每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.

     memecached基于内存的nosqlnot only sql)数据库,不能够持久化。

  支持多种语言:

redis安装:

准备工作

   先要安装gcc-c++  

    yum  install -y gcc-c++

下载redis

   linux下载地址:wget http://download.redis.io/releases/redis-4.0.1.tar.gz

              -c  断点续传   -b后台下载

   创建安装目录:

   mkdir /usr/redis

   解压到上面创建目录:

  tar -zxvf redis-4.0.1.tar.gz -C /usr/redis

安装redis

     进入解压的目录:

      cd  /usr/redis/redis-4.0.1

     编译: make   

     安装: make install  PREFIX=指定安装目录

   通常安装在usr下  :

     make install PREFIX=/usr/redis

启动

    方法1:进入bin目录  ./redis-server  (进入安装目录 下)

    方法2:复制安装包中 redis.conf 到安装目录bin下  修改里面守护进程配置为 daemonize  yes

               (方法2启动方式可以redis启动,是后台运行,无需新开窗口就可以测试)

     bin目录下cp redis.confbin目录

cd /usr/redis

cd bin

     [root@redis1 bin]# cp ../redis-4.0.1/redis.conf  .

. 代表当前目录

       服务器端启动:./redis-server redis.conf

       查看是否启动:ps aux|grep redis

       客户端连接,仍然是bin下的执行:

cd /usr/redis

cd bin

 ./redis-cli  回车

       使用ping 命令,如果得到 pong说明可以用

        在客户端使用该命令退出:shutdown NOSAVE  

                                                  exit

redis常用命令

 地理空间(geospatial

    添加4个城市:

   geoadd china 116.41 39.91 bj 121.43 34.50 sh 114.06 22.61 sz  113.65 34.76 zz

返回两个城市的直线距离(默认单位为米,可以使用km

   geodist china zz sz

返回113.65 34.76经纬度为中心,800公里之内的城市

   georadius china 113.65 34.76  800 km

返回指定城市的经纬度

   geopos china sz zz

  字符串 string(字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串)

          set  get  del  mset  mget    incr  decr  appdend)     

散列类型 hashmap (散列类型相当于Java中的HashMap,他的值是一个字典,保存很多keyvalue)

         (hset  hget hmset hmget  hgetall  hdel hkeys hvals hlen  del删除key)

  列表类型 list(列表类型(list)用于存储一个有序的字符串列表,常用的操作是向队列两端添加元素或者获得列表的某一片段)lpush rpush lpop rpop llen lindex

 

 集合类型 set(集合中每个元素都是不同的)

   (sadd  srem smembers sismember scard spop  srandmember)

 有序集合类型 sortedset(有序集合类型与集合类型的区别就是他是有序的)

        Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

        不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。

   zadd zrem zcard zcount

   keys *  

   flushall 清空所有数据

6,关闭redis

   shutdown save/nosave  (在连接窗口使用shutdown  使用保存或者不保存数据)

   quit(退出后,redis服务会关闭,再次连接需要启动服务再次调用./redis-server redis.conf

java操作redis:

 maven依赖:
    <dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.7.3</version>
	</dependency>

      //初始化jedis连接
        Jedis jedis = new Jedis("localhost",6379);
        //测试redis服务器的连通性
        String pong = jedis.ping();
        System.out.println(pong);
        //字符串 string
        jedis.set("aaa", "111");
        // 获取存储的数据并输出
        System.out.println("redis 存储的字符串为: "+ jedis.get("aaa"));

        //散列 hashmap
        Map<String, String> map = new HashMap();
        map.put("userName", "scott");
        map.put("password", "tiger");
        map.put("age", "100");
        // 将map存入redis中
        jedis.hmset("mapa", map);

        // 取出redis中的map进行遍历
        Map<String, String> userMap = jedis.hgetAll("mapa");
        for (Map.Entry<String, String> item : userMap.entrySet()) {
            System.out.println(item.getKey() + " : " + item.getValue());
        }

        // 列表 list
        jedis.lpush("lista", "111");
        jedis.lpush("lista", "222");
        jedis.lpush("lista", "333");
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("lista", 0 ,2);
        for(int i=0; i<list.size(); i++) {
            System.out.println("列表项为: "+list.get(i));
        }
        // 集合 set
        jedis.sadd("course","java","c","c#","java","python");
        // 自动去重
        System.out.println(jedis.smembers("course"));

        //有序集合 sorted set
        Map<String,Double> map1 = new HashMap<>();
        map1.put("python",2.0);
        map1.put("java",1.0);
        map1.put("bigdata",3.0);
        map1.put("AI",4.0);
        jedis.zadd("mysort", map1);
        //正序排列
        Set<String> mysort = jedis.zrange("mysort",0,-1);
        System.out.println(mysort);
      
        //Keys 实例
        // 获取数据并输出
        Set<String> keys = jedis.keys("*");
        Iterator<String> it=keys.iterator() ;
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key);
        }

 

原文地址:https://www.cnblogs.com/duguangming/p/11140564.html