Redis命令

    【本地启动】
    cd 进入到解压的主目录 输入  redis-server.exe  redis.windows.conf  打开服务 
    cd 进入到解压的主目录 输入  redis-cli.exe 打开客户端
    链接服务器  redis-cli.exe -h 192.168.2.92 -p 6379   要在主目录下才可以
    连接redis 不需要 用户名和密码  可以自行设定

    【登录linux下的redis】
    [root@sh-192-168-0-227 bin]# ps -ef|grep redis
    root      3063     1  0 Jun15 ?        00:18:34 /usr/local/bin/redis-server *:6379                        
    root     17894 14186  0 14:21 pts/4    00:00:00 grep redis
    [root@sh-192-168-0-227 bin]# cd /usr/local/bin/
    [root@sh-192-168-0-227 bin]# ./redis-cli 
    127.0.0.1:6379> dbsize
    (integer) 27226
    127.0.0.1:6379> ping
    PONG
    127.0.0.1:6379> 
    在当期目录下 连接服务
    ./redis-cli -h 192.168.100.34 -p 6379 
    192.168.100.34:6379>
     
    CONFIG SET  requirepass "mypass"
    # 设置密码
    redis> CONFIG SET requirepass secret_password   # 将密码设置为 secret_password
    OK
    redis> QUIT                                     # 退出再连接,让新密码对客户端生效
    [huangz@mypad]$ redis
    redis> PING                                     # 未验证密码,操作被拒绝
    (error) ERR operation not permitted
    redis> AUTH wrong_password_testing              # 尝试输入错误的密码
    (error) ERR invalid password
    redis> AUTH secret_password                     # 输入正确的密码
    OK
    redis> PING                                     # 密码验证成功,可以正常操作命令了
    PONG
     
     
    # 清空密码
    redis> CONFIG SET requirepass ""   # 通过将密码设为空字符来清空密码
    OK
    redis> QUIT
    $ redis                            # 重新进入客户端
    redis> PING                        # 执行命令不再需要密码,清空密码操作成功
    PONG
     
    移动数据库里面的数据
    select 0-15
      
    选择数据库
    select 0
     
    set age 20
    get age 
    20
     
    move age 1integer)1已经移除成功
    select 1
    get age
    20
     
    expire age 300过期时间
    ttl age 查看过期时间  
    移除过期时间persist age
    ping 测试连接是否存活
    PONG
    quit 退出客户端
    info 服务器信息
    multi保存队列在里面 
    exec依次执行命令
    discard取消队列里面所有的命令(事务回滚)
    RDB持久化
    命令SAVE BGSAVE(会派生好出一个子进程,然后由子进程负责创建RDB 文件,父进程继续处理命令请求)

    登陆表redis数据

  
    Redis命令总结 
 
    keys * 取出当前匹配的所有key
    如 : keys hq:0*
 
    > exists larry
     (integer) 0
    当前的key是否存在
 
    del lv  删除当前key
 
    expire 设置过期时间
 
    > move larry ad4
     (integer) 1
    移动larry键值对到ad4数据库
 
    > persist lv
     (integer) 1
    移除当前key的过期时间
 
    randomkey 随机返回一个key
 
    rename 重命名key
 
    type 返回值的数据类型
 
     type testlist
     list
 
     > ping
     PONG
    测试连接是否还在
 
    >echo name
    "larry"
    打印
 
    > select ad4databank
     OK
    数据库切换
 
    当前数据库中key的数量
 
    > info
    服务器基本信息
 
    连接操作相关的命令
    quit:关闭连接(connection)
    auth:简单密码认证
 
    持久化
    save:将数据同步保存到磁盘
    bgsave:将数据异步保存到磁盘
    lastsave:返回上次成功将数据保存到磁盘的Unix时戳
    shundown:将数据同步保存到磁盘,然后关闭服务
 
 
    远程服务控制
    info:提供服务器的信息和统计
    monitor:实时转储收到的请求
    slaveof:改变复制策略设置
    config:在运行时配置Redis服务器
      
    ===============================================================> 
    对value操作的命令
    type(key):    返回值的类型
    exists(key):  确认一个key是否存在
    dbsize:       返回当前数据库中key的数目
    del(key):     删除一个key
    keys(pattern):返回满足给定pattern的所有key
    randomkey:    随机返回key空间的一个
    keyrename(oldname, newname):重命名key
    expire:      设定一个key的活动时间(s)
    ttl:         获得一个key的活动时间
    select(index):按索引查询
    move(key, dbindex):移动当前数据库中的key到dbindex数据库
    flushdb:     删除当前选择数据库中的所有key
    flushall:    删除所有数据库中的所有key
 
    *********************************************【对String操作的命令】******************************************************
    string是最简单的类型,一个Key对应一个Value。
    string类型是二进制安全的,redis的string可以包含任何数据。
 
    1. set(key, value):设置一个string类型的key和value(重复添加值会覆盖)           
         如: set name2  Tom
    2. get(key):获取key对应的value值                                         
         如: get name2
    3. getset(key, value):给名称为key的string赋予上一次的value
    4. mget(key1, key2,…, key N):返回库中多个string的value
    5. setnx(key, value):设置一个key的值string类型的value ,key值不存在则添加,key值存在则返回0:                      
         如: set name  com                       
    6. setex(key, time, value):设置一个键值key的有效期time                           
         如: setex col 7 red 
    7. setrange(key, value): 设置指定key的value值的子字符串:
    8. strlen(key):  取指定key的value值的长度:        如:127.0.0.1:6379> strlen name
    9. mset(key N, value N):一次设置多个key的值
    10. mget (key1,key2,key3..) 一次获取多个key的值
        如:127.0.0.1:6379> mset name tom age 25 sex man
            OK
            127.0.0.1:6379> mget name age sex
            1) "tom"
            2) "25"
            3) "man"
    11. msetnx(key N, value N):设置多个value、不覆盖已存在的key:
        如 127.0.0.1:6379> msetnx name tom age 25 sex man email tom13@163.com
            (integer) 1
            127.0.0.1:6379> mget name age sex email
            1) "tom"
            2) "25"
            3) "man"
            4) "tom13@163.com"
    12. getrange(key, 起始位置,结束位置)
        如:127.0.0.1:6379> get name
            "ma.fenglei"
            127.0.0.1:6379> getrange  name 3 -1
            "fenglei"
    13. incr(key):对key的值做加加操作,并返回新的值 (类似于i++)
        如:127.0.0.1:6379> get age
            "25"
            127.0.0.1:6379> incr age
            (integer) 26
            127.0.0.1:6379> incr age
            (integer) 27
    14. incrby(key, integer):加指定值,key不存在设置key,并认为原来的值为0:
        如:127.0.0.1:6379> get age
            "27"
            127.0.0.1:6379> incrby age 5
            (integer) 32
            127.0.0.1:6379> incrby age 5
            (integer) 37
    15. decr(key):对key的值做减减操作:
        如:127.0.0.1:6379> get age
            "37"
            127.0.0.1:6379> decr age
            (integer) 36
            127.0.0.1:6379> decr age
            (integer) 35
    16. decrby(key, integer):同decr类似,减<指定值>:
        如:127.0.0.1:6379> get age
            "35"
            127.0.0.1:6379> decrby age 5
            (integer) 30
            127.0.0.1:6379> decrby age 5
            (integer) 25
    17. append(key, value):给指定的key的字符串追加value,返回新字符串值的长度:
        如:127.0.0.1:6379> get name
            "fenglei"
            127.0.0.1:6379> append name @qq.com
            (integer) 14
            127.0.0.1:6379> get name
            "fenglei@qq.com"
    18. substr(key, start, end):接取字符串
        如:127.0.0.1:6379> get name
            "fenglei@qq.com"
            127.0.0.1:6379> substr name 2 9
            "nglei@qq"
            127.0.0.1:6379>
    *********************************************end******************************************************************
 
 
     
    *********************************************【对List操作的命令】******************************************************
    list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理解为链表的名字。
 
    1. lpush(key, value):在key对应list的头部添加字符串元素:
         如:127.0.0.1:6379> lpush mylist world
             (integer) 1
             127.0.0.1:6379> lpush mylist hello
             (integer) 2
             127.0.0.1:6379> lrange mylist 0 -1
             1) "hello"
             2) "world"
             127.0.0.1:6379>
    2. rpush(key, value):在key对应list的尾部添加字符串元素:  
         如:127.0.0.1:6379> rpush mylist2 hello
             (integer) 1
             127.0.0.1:6379> rpush mylist2 world
             (integer) 2
             127.0.0.1:6379> lrange mylist2 0 -1
             1) "hello"
             2) "world"
    3. lrange(key, start, end):返回名称为key的list中start至end之间的元素
        如:127.0.0.1:6379> lrange mylist 0 -1  返回key为mylist的所有的值
    4. llen(key):返回名称为key的list的长度
    5. linsert  在key对应list的特定位置之前或之后添加字符串元素:
        如:127.0.0.1:6379> lrange mylist3 0 -1
            1) "hello"
            2) "world"
            127.0.0.1:6379> linsert mylist3 before world there
            (integer) 3
            127.0.0.1:6379> lrange mylist3 0 -1
            1) "hello"
            2) "there"
            3) "world"
    6. ltrim(key, start, end):截取名称为key的list
        如:127.0.0.1:6379> lrange mylist8 0 -1
            1) "one"
            2) "two"
            3) "three"
            4) "four"
            127.0.0.1:6379> ltrim mylist8 1 -1
            OK
            127.0.0.1:6379> lrange mylist8 0 -1
            1) "two"
            2) "three"
            3) "four"
    7. lindex(key, index):返回名称为key的list中index位置的元素:
        如:127.0.0.1:6379> lrange mylist5 0 -1
            1) "foo]"
            2) "hello"
            127.0.0.1:6379> lindex mylist5 0
            "foo]"
            127.0.0.1:6379> lindex mylist5 1
            "hello"
            127.0.0.1:6379>
    8. lset(key, index, value):设置list中指定下标的元素值(下标从0开始)
        如:127.0.0.1:6379> lrange mylist4 0 -1
            1) "one"
            2) "two"
            3) "three"
            127.0.0.1:6379> lset mylist4 0 four
            OK
            127.0.0.1:6379> lrange mylist4 0 -1
            1) "four"
            2) "two"
            3) "three"
    9. lrem(key, count, value):从key对应list中删除count个和value相同的元素。
       count>0时,按从头到尾的顺序删除,count<0时,按从尾到头的顺序删除,count=0时,删除全部,
        如:127.0.0.1:6379> lrange mylist5 0 -1
            1) "hello"
            2) "hello"
            3) "foo]"
            4) "hello"
            127.0.0.1:6379> lrem mylist5 2 hello
            (integer) 2
            127.0.0.1:6379> lrange mylist5 0 -1
            1) "foo]"
            2) "hello"
    10. lpop 从list的头部删除元素,并返回删除元素:          
         如:127.0.0.1:6379> lrange mylist 0 -1
            1) "five"
            2) "world"
            127.0.0.1:6379> lpop mylist
            "five"
            127.0.0.1:6379> lrange mylist 0 -1
            1) "world"
    11. rpop(key):从list的尾部删除元素,并返回删除元素:
    blpop(key1, key2,… key N, timeout):lpop命令的block版本。
    brpop(key1, key2,… key N, timeout):rpop的block版本。
    rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
 
    *********************************************end******************************************************************
 
 
 
 
 
   *********************************************【对set操作的命令】******************************************************
 
    对Set操作的命令
    sadd(key, member):向名称为key的set中添加元素member
    srem(key, member) :删除名称为key的set中的元素member
    spop(key) :随机返回并删除名称为key的set中一个元素
    smove(srckey, dstkey, member) :移到集合元素
    scard(key) :返回名称为key的set的基数
    sismember(key, member) :member是否是名称为key的set的元素
    sinter(key1, key2,…key N) :求交集
    sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
    sunion(key1, (keys)) :求并集
    sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
    sdiff(key1, (keys)) :求差集
    sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
    smembers(key) :返回名称为key的set的所有元素
    srandmember(key) :随机返回名称为key的set的一个元素
 
   *********************************************【对hash操作的命令】******************************************************
 
    查看 一个
    192.168.0.227:6379> type  "CG:USER:19842"
    hash
    192.168.0.227:6379> hkeys  "CG:USER:19842"
    1) "usableDecks"
    2) "id"
    3) "battleDeck"
    4) "nicknm"
    5) "prepareHeros"
    192.168.0.227:6379> hget  "CG:USER:19842" "usableDecks"
    "{\"0\":{\"1\":1,\"2\":2,\"4\":1,\"5\":1,\"6\":1,\"9\":1,\"11\":1,\"15\":1,\"18\
    ":2,\"20\":1,\"22\":2,\"23\":2,\"24\":1,\"27\":2,\"30\":2,\"32\":2,\"33\":1,\"40
    \":1,\"44\":1,\"45\":2,\"47\":2}}"
    192.168.0.227:6379>
 
    redis.hset("hashs", "key001", "value001");
    对Hash操作的命令  这里key 为设置的键
 
    1. hset(key, field, value):向名称为key的hash中添加元素field的值value,
       如果哈希表中域字段已经存在且旧值已被新值覆盖
        如:127.0.0.1:6379> hset myhash fp foo
            (integer) 1
            127.0.0.1:6379> hget myhash fp
            "foo"
            127.0.0.1:6379> hset myhash google www.google.com
            (integer) 1
            127.0.0.1:6379> hkeys myhash
            1) "fp"
            2) "google"
    2. hkeys(key): 获取哈希表中的所有的键。
        如:127.0.0.1:6379> hset myhash field1 foo
            (integer) 1
            127.0.0.1:6379> hset myhash field2 bar
            (integer) 1
            127.0.0.1:6379> hkeys myhash
            1) "field1"
            2) "field2"
            127.0.0.1:6379> hget myhash field2
            "bar"
            127.0.0.1:6379> 
    2. hget(key, field):返回名称为key的hash中field对应的value
    3. hmset(key, (fields)):同时将多个 field-value (字段-值)对设置到哈希表中。
        如: 127.0.0.1:6379> hmset myhash2 name tom age 28
             OK
             127.0.0.1:6379> hget myhash2 name
             "tom"
             127.0.0.1:6379> hget myhash2 age
             "28"
    4. hmget(key, (fields)):获取全部指定的hash field。
         如:127.0.0.1:6379> hkeys myhash2
             1) "name"
             2) "age"
             127.0.0.1:6379> hmget myhash2 name
             1) "tom"
             127.0.0.1:6379> hmget myhash2 name age
             1) "tom"
             2) "28"
             127.0.0.1:6379>
    5. hincrby(key, field, integer):将名称为key的hash中field的value增加integer
         如:127.0.0.1:6379> hset user:002 age 29
             (integer) 1
             127.0.0.1:6379> hget user:002 age
             "29"
             127.0.0.1:6379> hincrby user:002 age 5
             (integer) 34
             127.0.0.1:6379> hget user:002 age
             "34"
             127.0.0.1:6379> hkeys user:002
             1) "age"
    6. hexists(key, field):测试指定field在hash中是否存在。返回1为存在,0为不存在
         如:127.0.0.1:6379> hexists user:002 name
             (integer) 0
             127.0.0.1:6379> hexists user:002 age
             (integer) 1
    7. hdel(key, field):删除指定hash的field。
    8. hlen(key):返回名称为key的hash中元素个数
    9. hvals(key):返回hash的所有value。
         如:127.0.0.1:6379> hvals user:002
             1) "34"
             2) "tom]"
             127.0.0.1:6379> hkeys user:002
             1) "age"
             2) "name"
    10. hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
         如:127.0.0.1:6379> hkeys user:002
             1) "age"
             2) "name"
             127.0.0.1:6379> hgetall user:002
             1) "age"
             2) "34"
             3) "name"
             4) "tom]"
 
 
 
 
    Redis文件夹有以下几个文件
       redis-server.exe:服务程序
       redis-check-dump.exe:本地数据库检查
       redis-check-aof.exe:更新日志检查
       redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).
      目前只用了 redis-server.exe,它是启动redis服务的,它在服务器上执行就可以了,我们可以写个BAT文件让它去执行autorunRedis.bat 
 

 --------------------------------------------------------------------------------------------------------------------------------

 
 
 package com.aug3.storage.redisclient.practice;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;

import java.util.*;

/**
 * Created by fenglei.ma on 2018/3/30. 16:37
 */
public class RedisTest1 {


    public static void main(String[] args) {
        Jedis redis = new Jedis("192.168.100.34", 6379);

        /* -----------------------------------------------------------------------------------------------------------  */

        //KEYS 操作
        Set keys = redis.keys("*");//列出所有的key,查找特定的key如:redis.keys("foo")
        Iterator t1 = keys.iterator();
        while (t1.hasNext()) {
            Object obj1 = t1.next();
            System.out.println(obj1);
        }

        //DEL 移除给定的一个或多个key。如果key不存在,则忽略该命令。
        redis.del("name1");

        //TTL 返回给定key的剩余生存时间(time to live)(以秒为单位)
        redis.ttl("foo");

        //PERSIST key 移除给定key的生存时间。
        redis.persist("foo");

        //EXISTS 检查给定key是否存在。
        redis.exists("foo");

        //MOVE key db  将当前数据库(默认为0)的key移动到给定的数据库db当中。如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。
        redis.move("foo", 1);//将foo这个key,移动到数据库1

        //RENAME key newkey  将key改名为newkey。当key和newkey相同或者key不存在时,返回一个错误。当newkey已经存在时,RENAME命令将覆盖旧值。
        redis.rename("foo", "foonew");

        //TYPE key 返回key所储存的值的类型。
        System.out.println(redis.type("foo"));//none(key不存在),string(字符串),list(列表),set(集合),zset(有序集),hash(哈希表)

        //EXPIRE key seconds 为给定key设置生存时间。当key过期时,它会被自动删除。
        redis.expire("foo", 5);//5秒过期
        //EXPIREAT EXPIREAT的作用和EXPIRE一样,都用于为key设置生存时间。不同在于EXPIREAT命令接受的时间参数是UNIX时间戳(unix timestamp)。

        //一般SORT用法 最简单的SORT使用方法是SORT key。
        redis.lpush("sort", "1");
        redis.lpush("sort", "4");
        redis.lpush("sort", "6");
        redis.lpush("sort", "3");
        redis.lpush("sort", "0");

        List list = redis.sort("sort");//默认是升序
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        /* -----------------------------------------------------------------------------------------------------------  */
        //   STRING 操作

        //SET key value将字符串值value关联到key。
        redis.set("name", "wangjun1");
        redis.set("id", "123456");
        redis.set("address", "guangzhou");

        //SETEX key seconds value将值value关联到key,并将key的生存时间设为seconds(以秒为单位)。
        redis.setex("foo", 5, "haha");

        //MSET key value [key value ...]同时设置一个或多个key-value对。
        redis.mset("haha", "111", "xixi", "222");

        //redis.flushAll();清空所有的key
        System.out.println(redis.dbSize());//dbSize是多少个key的个数

        //APPEND key value如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值之后。
        redis.append("foo", "00");//如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值之后。

        //GET key 返回key所关联的字符串值
        redis.get("foo");

        //MGET key [key ...] 返回所有(一个或多个)给定key的值
        List list2 = redis.mget("haha", "xixi");
        for (int i = 0; i < list2.size(); i++) {
            System.out.println(list2.get(i));
        }

        //DECR key将key中储存的数字值减一。
        //DECRBY key decrement将key所储存的值减去减量decrement。
        //INCR key 将key中储存的数字值增一。
        //INCRBY key increment 将key所储存的值加上增量increment。


        /* -----------------------------------------------------------------------------------------------------------  */
        //  Hash 操作

        //HSET key field value将哈希表key中的域field的值设为value。
        redis.hset("website", "google", "www.google.cn");
        redis.hset("website", "baidu", "www.baidu.com");
        redis.hset("website", "sina", "www.sina.com");

        //HMSET key field value [field value ...] 同时将多个field - value(域-值)对设置到哈希表key中。
        Map map = new HashMap();
        map.put("cardid", "123456");
        map.put("username", "jzkangta");
        redis.hmset("hash", map);

        //HGET key field返回哈希表key中给定域field的值。
        System.out.println(redis.hget("hash", "username"));

        //HMGET key field [field ...]返回哈希表key中,一个或多个给定域的值。
        List list3 = redis.hmget("website", "google", "baidu", "sina");
        for (int i = 0; i < list3.size(); i++) {
            System.out.println(list3.get(i));
        }

        //HGETALL key返回哈希表key中,所有的域和值。
        Map<String, String> map1 = redis.hgetAll("hash");
        for (Map.Entry entry : map1.entrySet()) {
            System.out.print(entry.getKey() + ":" + entry.getValue() + "\t");
        }

        //HDEL key field [field ...]删除哈希表key中的一个或多个指定域。
        //HLEN key 返回哈希表key中域的数量。
        //HEXISTS key field查看哈希表key中,给定域field是否存在。
        //HINCRBY key field increment为哈希表key中的域field的值加上增量increment。
        //HKEYS key返回哈希表key中的所有域。
        //HVALS key返回哈希表key中的所有值。


        /* -----------------------------------------------------------------------------------------------------------  */
        // LIST 操作
        //LPUSH key value [value ...]将值value插入到列表key的表头。
        redis.lpush("list", "abc");
        redis.lpush("list", "xzc");
        redis.lpush("list", "erf");
        redis.lpush("list", "bnh");

        //LRANGE key start stop返回列表key中指定区间内的元素,区间以偏移量start和stop指定。下标(index)参数start和stop都以0为底,也就是说,以0表示列表的第一个元素,以1表示列表的第二个元素,以此类推。你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
        List list4 = redis.lrange("list", 0, -1);
        for (int i = 0; i < list4.size(); i++) {
            System.out.println(list4.get(i));
        }

        //LLEN key返回列表key的长度。
        //LREM key count value根据参数count的值,移除列表中与参数value相等的元素。

        /* -----------------------------------------------------------------------------------------------------------  */
        //  SET 操作
        //SADD key member [member ...]将member元素加入到集合key当中。
        redis.sadd("testSet", "s1");
        redis.sadd("testSet", "s2");
        redis.sadd("testSet", "s3");
        redis.sadd("testSet", "s4");
        redis.sadd("testSet", "s5");

        //SREM key member移除集合中的member元素。
        redis.srem("testSet", "s5");

        //SMEMBERS key返回集合key中的所有成员。
        Set set = redis.smembers("testSet");
        Iterator t12 = set.iterator();
        while (t1.hasNext()) {
            Object obj1 = t12.next();
            System.out.println(obj1);
        }

        //SISMEMBER key member判断member元素是否是集合key的成员。是(true),否则(false)
        System.out.println(redis.sismember("testSet", "s4"));

    }

    public void testredis() {
        System.out.println("start");

        Jedis redis = new Jedis("192.168.100.34", 6379);
        Pipeline pipelined = redis.pipelined();
        pipelined.set("test:key_569", "val1154564654653553");
        pipelined.sync();
        System.out.println("读取" + redis.get("test:key_569"));
        System.out.println();

        String value = String.format("%s|%s|%s|%s|%s", new Object[]{"10:38:51", "12.36", "385234.0", "3832461.32", "10.03"});
        pipelined.rpush("test:practice5", value);
        pipelined.sync();
        System.out.println("写入数据完成");
        System.out.println("读取" + redis.rpop("test:practice5"));
        System.out.println();

        Map<String, String> ssMap = new HashMap<String, String>();
        ssMap.put("name", "fangshijiu");
        ssMap.put("address", "浦江镇");
        ssMap.put("salary", "8000");
        ssMap.put("age", "28");
        pipelined.hmset("test:practice4", ssMap);
        pipelined.sync();
        System.out.println("写入数据完成");

        System.out.println("读取");
        Map<String, String> stringStringMap = redis.hgetAll("test:practice4");
        for (String key : stringStringMap.keySet()) {
            System.out.println(key + " : " + stringStringMap.get(key));
        }

        System.out.println("end");
    }


}

 

posted @ 2018-03-30 14:41  百合叶  阅读(88)  评论(0编辑  收藏  举报