A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hunyiha 初级黑马   /  2019-10-10 14:47  /  1330 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


一 redis简介
     redis是一款高性能的键值对(key-value)非关系型数据库。key是字符串类型,value包含五种类型:string hash list set sortedset
二 redis安装
    redis是C语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境
        1 安装gcc-c++
        yum install gcc-c++
        2 安装redis
                #下载redis
                wget http://download.redis.io/releases/redis-3.0.4.tar.gz
                #解压到/usr/local目录下
                tar -xzvf redis-3.0.4.tar.gz -C /usr/local/
                #编译安装,切换至程序目录,并执行make命令编译
                cd redis-3.0.4
                #编译 ,前提是Gcc的成功
                make
                #安装
                make PREFIX=/usr/local/redis install

三 redis中value数据类型介绍
        1) 字符串类型 string
        2) 哈希类型 hash : map格式  
        3) 列表类型 list : linkedlist格式。支持重复元素
        4) 集合类型 set  : 不允许重复元素
        5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序

四 命令行操作
[Shell] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
1. 字符串类型 string
        1. 存储: set key value
            127.0.0.1:6379> set username zhangsan
            OK
        2. 获取: get key
            127.0.0.1:6379> get username
            "zhangsan"
        3. 删除: del key
            127.0.0.1:6379> del age
            (integer) 1
    2. 哈希类型 hash
        1. 存储: hset key field value
            127.0.0.1:6379> hset myhash username lisi
            (integer) 1
            127.0.0.1:6379> hset myhash password 123
            (integer) 1
        2. 获取:
            * hget key field: 获取指定的field对应的值
                127.0.0.1:6379> hget myhash username
                "lisi"
            * hgetall key:获取所有的field和value
                127.0.0.1:6379> hgetall myhash
                1) "username"
                2) "lisi"
                3) "password"
                4) "123"
                 
        3. 删除: hdel key field
            127.0.0.1:6379> hdel myhash username
            (integer) 1
     
    3. 列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
        1. 添加:
            1. lpush key value: 将元素加入列表左表
                 
            2. rpush key value:将元素加入列表右边
                 
                127.0.0.1:6379> lpush myList a
                (integer) 1
                127.0.0.1:6379> lpush myList b
                (integer) 2
                127.0.0.1:6379> rpush myList c
                (integer) 3
        2. 获取:
            * lrange key start end :范围获取
                127.0.0.1:6379> lrange myList 0 -1
                1) "b"
                2) "a"
                3) "c"
        3. 删除:
            * lpop key: 删除列表最左边的元素,并将元素返回
            * rpop key: 删除列表最右边的元素,并将元素返回


    4. 集合类型 set : 不允许重复元素
        1. 存储:sadd key value
            127.0.0.1:6379> sadd myset a
            (integer) 1
            127.0.0.1:6379> sadd myset a
            (integer) 0
        2. 获取:smembers key:获取set集合中所有元素
            127.0.0.1:6379> smembers myset
            1) "a"
        3. 删除:srem key value:删除set集合中的某个元素  
            127.0.0.1:6379> srem myset a
            (integer) 1
    5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

        1. 存储:zadd key score value
            127.0.0.1:6379> zadd mysort 60 zhangsan
            (integer) 1
            127.0.0.1:6379> zadd mysort 50 lisi
            (integer) 1
            127.0.0.1:6379> zadd mysort 80 wangwu
            (integer) 1
        2. 获取:zrange key start end [withscores]
            127.0.0.1:6379> zrange mysort 0 -1
            1) "lisi"
            2) "zhangsan"
            3) "wangwu"

            127.0.0.1:6379> zrange mysort 0 -1 withscores
            1) "zhangsan"
            2) "60"
            3) "wangwu"
            4) "80"
            5) "lisi"
            6) "500"
        3. 删除:zrem key value
            127.0.0.1:6379> zrem mysort lisi
            (integer) 1

五 java客户端操作redis-jedis
      1 使用步骤
                //1. 获取连接
                Jedis jedis = new Jedis("localhost",6379);
                //2. 操作
                jedis.set("username","zhangsan");
                //3. 关闭连接
                jedis.close();

      2 Jedis操作各种redis中的数据结构
[Java] 纯文本查看 复制代码
?
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
1) 字符串类型 string
             //1. 获取连接
            Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
            //2. 操作
            //存储
            jedis.set("username","zhangsan");
            //获取
            String username = jedis.get("username");
            System.out.println(username);
     
            //可以使用setex()方法存储可以指定过期时间的 key value
            jedis.setex("activecode",20,"hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对
     
            //3. 关闭连接
            jedis.close();

        2) 哈希类型 hash : map格式  

            //1. 获取连接
            Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
            //2. 操作
            // 存储hash
            jedis.hset("user","name","lisi");
            jedis.hset("user","age","23");
            jedis.hset("user","gender","female");
     
            // 获取hash
            String name = jedis.hget("user", "name");
            System.out.println(name);
     
     
            // 获取hash的所有map中的数据
            Map<String, String> user = jedis.hgetAll("user");
     
            // keyset
            Set<String> keySet = user.keySet();
            for (String key : keySet) {
                //获取value
                String value = user.get(key);
                System.out.println(key + ":" + value);
            }
     
            //3. 关闭连接
            jedis.close();


        3) 列表类型 list : linkedlist格式。支持重复元素
            
             //1. 获取连接
            Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
            //2. 操作
            // list 存储
            jedis.lpush("mylist","a","b","c");//从左边存
            jedis.rpush("mylist","a","b","c");//从右边存
     
            // list 范围获取
            List<String> mylist = jedis.lrange("mylist", 0, -1);
            System.out.println(mylist);
            
            // list 弹出
            String element1 = jedis.lpop("mylist");//c
            System.out.println(element1);
     
            String element2 = jedis.rpop("mylist");//c
            System.out.println(element2);
     
            // list 范围获取
            List<String> mylist2 = jedis.lrange("mylist", 0, -1);
            System.out.println(mylist2);
     
            //3. 关闭连接
            jedis.close();


        4) 集合类型 set  : 不允许重复元素

            //1. 获取连接
            Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
            //2. 操作
            // set 存储
            jedis.sadd("myset","java","php","c++");
     
            // set 获取
            Set<String> myset = jedis.smembers("myset");
            System.out.println(myset);
     
            //3. 关闭连接
            jedis.close();
        5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序

            //1. 获取连接
            Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
            //2. 操作
            // sortedset 存储
            jedis.zadd("mysortedset",3,"亚瑟");
            jedis.zadd("mysortedset",30,"后裔");
            jedis.zadd("mysortedset",55,"孙悟空");
     
            // sortedset 获取
            Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
            System.out.println(mysortedset);
     
            //3. 关闭连接
            jedis.close();

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马