一.存储list

1.概述
     list类型是按照插入顺序排序的字符串链表,可以在头部(left)和尾部(right)添加新的元素,如果不存在,则自动创建;如果list中所有元素被移除,则list也会消失;
     ArrayList:使用数组方式存储数据,有索引,所以查询快,增删慢(增删涉及到位移操作);
     LinkedList:为双向链表,每个元素都记录前后元素的指针,插入/删除时只更改前后元素的指针即可,速度较快,查询时需从头计算,速度较慢;

2.常用命令
     2.1添加
     lpush list01 a #头部添加(left)
     rpush list01 b #尾部添加(right)
     2.2查看
     lrange list01 0 -1 #查看从第1个到倒数第1个元素之间的所有元素,即所有元素;
     lrange list01 0 -2 #查看从第1个到倒数第2个元素之间的所有元素;
     2.3弹出
     lpop list01 #弹出头部元素(left);
     rpop list01 #弹出尾部元素(right);
     2.4获取列表中元素个数
     llen list01
     2.5仅向存在的列表中添加元素,若列表不存在,则添加失败
     lpushx list01 c  #头部添加
     rpushx list01 d #尾部添加
     2.6删除
     lrem list01 2 a #删除list01中最左边的2个a元素;
     lrem list01 -2 a #删除list01中最右边的2个a元素;
     lrem list01 0 a #删除list01中所有的a元素;
     2.7修改
     lset list01 3 m #设置list01中索引为3的元素为m; 0代表头元素/1代表尾元素/索引不存在则抛出异常
     2.8插入
     linsert list01 before 2 1 #在list01中的2元素左边插入元素1;
     linsert list01 after 2 1 #在list01中的2元素右边插入元素1;
     2.9去尾添头
     rpoplpush list01  list02 #将list01中的尾部元素添加到list02的头部;

二.存储set

1.概述
     set为无序集合,不包含重复数据,可以在服务端完成集合的交/并/差的计算,效率极高.且进行增/删/判断是否存在时,时间复杂度为O(1);

2.常用命令
     2.1添加
     sadd set01 a b c  #如果set01中已有a,则不会重复添加
     2.2删除
     srem set01 a #删除a元素
     2.3获取集合中的元素
     smembers set01 #获取set01中所有的key
     2.4判断集合中是否存在某元素
     sismember set01 a #判断set01中是否存在a元素,1表示存在,0表示元素不存在,或set01不存在
     2.5差集运算
     sdiff set01 set02 #返回除去二者共有元素后,set01中剩余的元素;
     sdiff set02 set01 #返回除去二者共有元素后,set02中剩余的元素;
     sdiffstore set03 set01 set02 #将返回的元素存储在set03中;
     2.6交集运算
     sinter set01 set02 #返回二者共有的元素;
     sinterstore set03 set01 set02 #将返回元素存储在set03中;
     2.7并集运算
     sunion set01 set02 #返回set01 set02中所有元素(重复元素只显示一次);
     sunionstore set03 set01 set02 #将并集运算结果存储在set03中
     2.8随机返回集合中的某一元素
     srandmember set01
     2.9获取集合中元素数量
     scard set01

三.存储Sorted-set

1.概述

Sorted-set与set集合相似,都是字符串的集合,都不允许重复;区别为Sorted-set中的每个成员都关联一个分数(score),通过分数为元素排序;

虽然元素唯一,但分数可重复;

2.常用命令

2.1添加

zadd mysort 20 jack #向mysort的Sorted-set中添加jack元素(分数为20);

zadd mysort 40 rose 50 smith #可同时添加多个;

2.2获取某成员分数

zscore mysort rose #返回字符串分数;

2.3获取成员数量

zcard mysort #返回成员个数,integer类型;

zcount mysort 40 70 #获取分数在40-70之间的成员数量,返回integer

2.4删除元素

zrem mysort smith #移除smith

zrem mysort smith  jack #移除smith

zremrangebyrank mysort 1 3 #移除排名(从小到大)为1-3的元素

zremrangebyscore mysort 0 60 #移除分数在0-60这间的元素

2.5范围查询

zrange mysort 0 -1 #返回从第一个到倒数第一个元素,即所有元素;

zrange mysort 0 -1 with scores #返回从第一个到倒数第一个元素,且包含分数;

zrevrange mysort 1 5 with scores #按照从大到小的顺序返回(包含两端元素);

2.6返回指定个数的成员,并按从小到大的分数排序

zrangebyscore mysort 90 100 withscores limit 3 5  #首先抽出90-100之间的元素按从小到大排序,再从索引为3的元素开始,取5个元素,并返回

2.7修改分数

zincrby mysort 5 jack #jack分数增加5

2.8返回成员排名

zrank mysort jack #返回成员在集合中的排名,integer,从小到大;

zrevrank mysort jack #返回成员在集合中的排名,integer,从大到小;

四.keys通用操作

1.keys pattern :获取所有与pattern匹配的key

keys *  # *表示一个或多个字符,此语句表示返回所有key;

keys m? # ?用匹配一个字符,此语句返回m开头的且长度为2个字符的key;

2.删除指定的key

del mysort

del list01

3.判断key是否存在

exists mysort #1代表存在,0代表不存在

4.重命名

rename mysort sort01  #把mysort重命名为sort01

5.设置过期时间,以秒为单位

expire mysort 100    #设置mysort的过期时间为100s

6.获取剩余时间,若未设置,则返回-1

ttl mysort

7.获取key的类型(string/list/set/hash/zset),不存在返回none

type mysort

五.Jedis(以下代码在Eclipse中实现)

1.导入jar包(commons-pool2-2.3/jedis-2.7)

2.开启redis(./bin/redis-server ./redis.conf),并测试连接成功

3.开启端口6379
     #防火墙打开3306端口
     /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
     #将打开的端口的访问规则保存在文件中
     /etc/rc.d/init.d/iptables save

4.实现如下代码

  1 package jedisdemo;
2 import org.junit.Test;
3 import redis.clients.jedis.Jedis;
4 import redis.clients.jedis.JedisPool;
5 import redis.clients.jedis.JedisPoolConfig;
6
7 public class jedisdemo {
8 @Test
9 public void test01() {
10 // 构造jedis实例对象
11 Jedis jedis = new Jedis("192.168.128.130", 6379);
12 // 设置key-value
13 jedis.set("name", "rose");
14 // 根据key取value
15 String name = jedis.get("name");
16 System.out.println(name);
17 // 释放资源
18 jedis.close();
19 }
20
21 // 连接池方式
22 @Test
23 public void test02() {
24 // 获取连接池,设置最大连接数,有效空闲连接
25 JedisPoolConfig conf = new JedisPoolConfig();
26 conf.setMaxTotal(100);
27 conf.setMaxIdle(10);
28 // 根据连接池配置创建一个jedis的连接池
29 JedisPool pool = new JedisPool(conf, "192.168.128.130", 6379);
30 // 获取连接池获取实例对象
31 Jedis jedis = pool.getResource();
32 jedis.set("age", "18");
33 String age01 = jedis.get("age");
34 System.out.println(age01);
35 // 关闭资源
36 jedis.close();
37 pool.close();
38
39 }
40 }
41

Redis数据库2的更多相关文章

  1. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  2. Spring + Jedis集成Redis(集群redis数据库)

    前段时间说过单例redis数据库的方法,但是生成环境一般不会使用,基本上都是集群redis数据库,所以这里说说集群redis的代码. 1.pom.xml引入jar <!--Redis--> ...

  3. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  4. 深入浅出Redis02 使用Redis数据库(String类型)

    一 String类型 首先使用启动服务器进程 : redis-server.exe 1. Set 设置Key对应的值为String 类型的value. 例子:向 Redis数据库中插入一条数据类型为S ...

  5. Redis数据库的使用与介绍

    本周11-15号开始用Redis数据库在现有的平台基础上开发一个独立模块,这是一个边学习.边记录.边交流.边开发.边总结的过程.大部分随笔都是个人的“工作日志”,旨在记录自己学习过程中收集的一些资料, ...

  6. node.js应用Redis数据库

    node.js下使用Redis,首先: 1.有一台安装了Redis的服务器,当然,安装在本机也行 2.本机,也就是客户端,要装node.js 3.项目要安装nodejs_redis模块 注意第 3 点 ...

  7. Ubuntu 安装和配置redis数据库

    Ubuntu 14.04下安装和配置redis数据库 小编现在在写一个分布式爬虫,要用到这个数据库,所以分享一下小编是如何安装和配置的,希望对大家有帮助. 工具/原料   Ubuntu 系统电脑一台 ...

  8. Redis数据库?-Redis的Virtual Memory介绍(转)

    众所周知,Redis是一个内存数据库,和Memcached类似,所有数据存在内存中,当然,Redis有rdb和appendonlyfile两个落地文件,可以对断电停机等故障下的数据恢复做一些保证.但是 ...

  9. php redis数据库操作类

    <?php namespace iphp\db; use iphp\App; /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时, ...

  10. Windows下安装Redis数据库并实现C#访问

    1.Redis在Windows下的安装 目前Redis官方并不支持Redis的Windows版本,需要去GitHub下载. GitHub上的Redis分两种,一种是以命令行形式安装的,一种是以Wind ...

随机推荐

  1. 面向对象——final关键字

    继承的弊端:打破了封装性 解决方式:final final关键字的特点: 1.final是一个修饰符,即可以修饰类,也可以修饰方法,还可以修饰变量 2.final修饰的类不可以被继承 3.final修 ...

  2. [转]sql where 1=1和 0=1 的作用

    sql where 1=1和 0=1 的作用 原文地址:http://www.cnblogs.com/junyuz/archive/2011/03/10/1979646.html where 1=1; ...

  3. URL shortening service

    Use Cases 1, shortening : take a URL => return a much shorter URL 2, redirection : take a short U ...

  4. Process 启动参数问题

    c#在有些情况下需要在启动另一个程序时传递参数,这里存在两个问题. 1.如果在参数里面含有空格,那么传递过去就会变成一个字符数组,这种情况是不满足情况的,解决方案是在传递参数时将空格用一些特殊字符替换 ...

  5. 微信公众号授权登录,提示“redirect_uri 参数错误”

    做微信公众号开发授权登录的时候遇到的坑... 后台服务用node,index.js相关代码如下: const oauth = new OAuth(conf.appid, conf.appsecret) ...

  6. ZOJ3526【缩点思想】

    一开始做的时候(TLE),A,C,G这三类作为边,然后点和点直接建边搜个环:then time BOOM! 可以发现只属于"A"类的之间都并在一起就好,同理"G" ...

  7. SLAM的现在与未来

    http://geek.csdn.net/news/detail/202128 作者:高翔,张涛,刘毅,颜沁睿. 编者按:本文节选自图书<视觉SLAM十四讲:从理论到实践>,系统介绍了视觉 ...

  8. 3DMAX 10 角色动作

    基本流程 1保存初始姿势(保存原始T动作) 2确定动画帧数时间 3找参考动作姿态,绘制关键帧草图 4先调整出初始姿势,如果是循环动画,需要把第一帧复制到最后一帧 5大体先想好在固定时间比例调草图的关键 ...

  9. Solr 6.7学习笔记(05)-- highlighter

    搜索结果高亮显示是搜索引擎中的常用功能,在Solr中,我们可以如下配置: <requestHandler name="/select" class="solr.Se ...

  10. MySQL下载与安装配置

    一.Windows 上安装 MySQL Windows 上安装 MySQL 相对简单,最新版本下载地址: 官网:https://dev.mysql.com/downloads/mysql/ 下载步骤: ...