博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis使用
阅读量:6592 次
发布时间:2019-06-24

本文共 4394 字,大约阅读时间需要 14 分钟。

使用redis时一定要记得redis是一个高性能的key-value数据库。不要用关系型数据库的思维去使用它。

redis中的数据只有key和value之间的对应,数据类型更没有关系型数据库中常用的int,float,char等类型

而是类似于java中的对象数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

理解这些对使用redis很重要。

 

redis中能通过index获取list中的值,但是不能通过指定的值获取index号。

所以redis中获取排序最好用的类型就是sort set有序集合 ,或者是hash

 

1、查看当前数据库的所有数据,也就是所有的键key:keys *

127.0.0.1:6379> keys *1) "users"

2、查看某个键的类型:type key

127.0.0.1:6379> type userszset

 

3、选择数据库,默认数据库0,默认有16个数据库,选择:select n

127.0.0.1:6379> select 1OK127.0.0.1:6379[1]>

 

4、查看当前连接数量,info clients

127.0.0.1:6379> info clients# Clientsconnected_clients:1client_recent_max_input_buffer:2client_recent_max_output_buffer:0blocked_clients:0

 

5、查看具体的连接情况,client list

127.0.0.1:6379> client listid=50621 addr=127.0.0.1:43110 fd=11 name= age=4663 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 obl=0 oll=0 omem=0 events=r cmd=clientid=50922 addr=127.0.0.1:44254 fd=8 name= age=11 idle=11 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=NULLid=50923 addr=127.0.0.1:44256 fd=9 name= age=11 idle=11 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=NULLid=50924 addr=127.0.0.1:44258 fd=10 name= age=11 idle=11 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=NULL

 

6、查看数据库最大连接数,config get maxclients

127.0.0.1:6379> config get maxclients1) "maxclients"2) "10000"

 

7、获取redis数据文件目录(没有设置的话就在启动redis的脚本所在的目录),config get dir

127.0.0.1:6379> config get dir1) "dir"2) "/home/ec2-user"

 

(1)、使用sorted set,不允许重复,比set多了一个score,score的值可重复且是double类型,可使用score来排序

            Set<Tuple> h = jedis.zrangeWithScores("history", 0, -1);

            for(Tuple t : h){
                System.out.println(t.getElement()+"score is "+t.getScore());
            }
            Set<String> e = jedis.zrange("history", 0, -1);
            for(String a :e){
                System.out.println(a+" score is  "+jedis.zscore("history", a));
            }

两种方法的结果是一样的,都是取出有序集合中的member和score

mysqlscore is 1.0

redisscore is 2.0
oraclescore is 3.0
mysql score is  1.0
redis score is  2.0
oracle score is  3.0

 

(2)、使用string

jedis.set("wnc_count", "1");

System.out.println("wnc count is  "+jedis.get("wnc_count"));
for(int i=0;i<5;i++){
    jedis.incr("wnc_count");
}

String中的value如果是数字,redis可以自动识别,使用incr命令可以递增数值:

wnc count is  1

After five increment ,wnc count is 6

(3)、使用list,里面的值可以有重复。

            jedis.lpush("query_list", "01","05","off");

            List<String> list1 = jedis.lrange("query_list", 0, -1);
            for(String code : list1){
                System.out.println(" Begin ,query history is : "+code);
            }
            jedis.lpush("query_list", "18");
            jedis.lpush("query_list", "41");
            jedis.lpush("query_list", "90");
            List<String> list2 = jedis.lrange("query_list", 0, 2);
            for(String code : list2){
                System.out.println("End ,query history is : "+code);
            }

lpush把最新的值放在最左边,读取时也是从左读,结果是:

Begin ,query history is : off

Begin ,query history is : 05
Begin ,query history is : 01
End ,query history is : 90
End ,query history is : 41
End ,query history is : 18
End ,query history is : off
End ,query history is : 05

 

(4)、使用set,无序,不可重复,适合随机读取。和list的区别就是不可重复和无序

           jedis.sadd("QQ", "你好","hello","你好","thanks","你好","多谢","你好","再见");

            Set<String> content = jedis.smembers("QQ");
            for(String str : content){
                System.out.println("qq contents is : "+str);
            }
            System.out.println("random content is : "+jedis.srandmember("QQ"));

随机读取的功能可以用来做碎语,代码结果为:

qq contents is : 你好

qq contents is : 多谢
qq contents is : hello
qq contents is : thanks
qq contents is : 再见

random content is : 多谢

(5)、使用hash,hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

            HashMap<String, String> hash = new HashMap<>();

            hash.put("清华", "100");
            hash.put("北大", "100");
            hash.put("牛津", "99");
            jedis.hmset("map", hash);
            HashMap<String, String> college = (HashMap<String, String>) jedis.hgetAll("map");
            Iterator iter = college.entrySet().iterator();

            while (iter.hasNext()) {

                Map.Entry<String, String> entry = (Entry<String, String>) iter.next();
                System.out.println("大学 :" + entry.getKey() + " 评分  :" + entry.getValue());
                System.out.println("大学 :" + entry.getKey() + " 评分  :" + jedis.hget("map", entry.getKey()));
                System.out.println("---------------------------------------------");
            }

类似于java的hashmap,提取数据时当然就要用hashmap来存储,遍历也就是遍历hashmap,结果是:

大学 :牛津 评分  :99

大学 :牛津 评分  :99
---------------------------------------------
大学 :清华 评分  :100
大学 :清华 评分  :100
---------------------------------------------
大学 :北大 评分  :100
大学 :北大 评分  :100
---------------------------------------------

转载于:https://www.cnblogs.com/daxi33/p/10461578.html

你可能感兴趣的文章
Redis介绍以及安装(Linux)
查看>>
FreeBSD下php-mbstring的安装
查看>>
去掉VS2012中的红色波浪下划线
查看>>
[文档]关于接口文档的写法
查看>>
一次tensorflow的尝试
查看>>
家具行业探索:企业管理沟通新模式
查看>>
ReplyError: MISCONF Redis is configured to save RDB snapshots,
查看>>
建立Git版本库管理框架例子
查看>>
nginx防止部分DDOS攻击
查看>>
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字......
查看>>
number_format() 函数定义和用法
查看>>
Java8中聚合操作collect、reduce方法详解
查看>>
查看记录
查看>>
mybatis报ORA-00911: 无效字符
查看>>
Swift UIView动画animateWithDuration
查看>>
Maven 集成Tomcat插件
查看>>
css中的line-height问题
查看>>
nagios监控配置
查看>>
Hadoop初体验:快速搭建Hadoop伪分布式环境
查看>>
项目进度管理、项目成本管理作业
查看>>