• Redis系列(二):常用操作


    一、数据类型

    如果学过数据结构就会知道,操作往往是在特定的数据结构上的,不同的数据结构就会有不同的操作,Redis支持以下的数据类型:

    字符串(Strings),列表(Lists),集合(Sets),哈希表(Hashes),有序集合(Sorted Sets),Bitmaps和HyperLogLogs,Bitmaps和HyperLogLogs其实也是基于字符串的类型,只不过定义了自己的语义。

    二、常用操作

    因为篇幅有限,这里无法介绍所有命令,只能介绍一些常用的操作,先说明Redis的命令是不区分大小写的,但是键值是区分大小写的,比如命令set和命令SET是一样的,但是set foo bar和set Foo bar是不一样的。

    • select

    我们启动了redis之后,默认的端口号是6379,这被称为一个实例,在一个实例中会有不同的库,默认是16个(0——15),这可以在redis.conf(如果设置了开机启动配置文件可能变成了6379.conf,具体需要看使用了哪个配置文件)中通过改变databases的值来修改

    # Set the number of databases. The default database is DB 0, you can select
    # a different one on a per-connection basis using SELECT <dbid> where
    # dbid is a number between 0 and 'databases'-1
    databases 16
    

    当我们连接了Redis之后,默认使用的数据库是0,可以通过select命令来切换成其他的库

    127.0.0.1:6379> select 1
    OK
    
    • set和get操作

    用过Java的都知道HashMap这种数据结构,就是键值对,存值和取值都非常方便,而且效率又高(时间复杂度都是O(1))。Redis提供的set和get方法也是如此,下面是存值和取值

    127.0.0.1:6379> set foo bar
    OK
    127.0.0.1:6379> get foo
    "bar"
    
    • lpush、lrem、lset、lindex

    这4个命令对应的是列表的增删改查4中操作:

    127.0.0.1:6379> lpush mylist 1 2 3 4
    (integer) 4
    127.0.0.1:6379> lrem mylist 1 1
    (integer) 1
    127.0.0.1:6379> lset mylist 0 6
    OK
    127.0.0.1:6379> lindex mylist 1
    "3"
    

    关于数组操作的命令有不少是批量操作

    需要注意的是,数组相关的操作是有方向的,比如上面的4个操作是从左边开始操作,比如lpush是从数组的左边添加元素,还有一个相对应的rpush命令是从数组的右边添加元素

    • sadd、scard、smembers、sinter

    这些是集合的操作,分别是添加元素到集合中,返回集合的元素个数,输出集合所有元素和计算交集

    127.0.0.1:6379> sadd myset1 one two three one two
    (integer) 3
    127.0.0.1:6379> scard myset1
    (integer) 3
    127.0.0.1:6379> smembers myset1
    1) "two"
    2) "one"
    3) "three"
    127.0.0.1:6379> sadd myset2 one two four
    (integer) 3
    127.0.0.1:6379> sinter myset1 myset2
    1) "two"
    2) "one"
    
    • zadd、zcard、zcount、zrange

    这些是有序集合的操作,它有着Sets集合的性质——元素不能重复,但是增加了元素的分数。换一句话说就是每个元素都会有一个分数,这个分数的作用就是在查找的时候,分数可以作为一个查找的条件。另外,有序集合保留了元素添加的顺序。

    127.0.0.1:6379> zadd mysortedset 1 one 2 two 3 three 2 two
    (integer) 3
    127.0.0.1:6379> zcard mysortedset
    (integer) 3
    127.0.0.1:6379> zcount mysortedset 2 3
    (integer) 2
    127.0.0.1:6379> zrange mysortedset 0 3 withscores
    1) "one"
    2) "1"
    3) "two"
    4) "2"
    5) "three"
    6) "3"
    

    zcount命令需要制定分数的最小值和最大值,比如上面的例子就是查出分数在[2, 3]这个区间内的元素个数

    • hset、hget、hdel、hexists

    这些是哈希表的操作,相当于Java中Map的put、get、remove和containsKey方法

    127.0.0.1:6379> hset myhash foo bar
    (integer) 1
    127.0.0.1:6379> hset myhash Foo Bar
    (integer) 1
    127.0.0.1:6379> hget myhash Foo
    "Bar"
    127.0.0.1:6379> hdel myhash foo
    (integer) 1
    127.0.0.1:6379> hexists myhash foo
    (integer) 0
    

    三、总结

    本篇主要介绍了Redis的数据类型和几种操作,由于篇幅的原因就不一一介绍,有兴趣可以到官网查看文档,官方文档地址,英语不好的同学可以看中文文档。还有Bitmaps和HyperLogLog这两种相对特殊的数据类型下一篇介绍。

  • 相关阅读:
    编译安装php
    CentOS yum 安装LAMP PHP5.4版本
    CentOS下php安装mcrypt扩展
    CentOS安装crontab及使用方法(转)
    解决svn "cannot set LC_CTYPE locale"的问题
    CentOS下通过yum安装svn及配置
    linux svn启动和关闭
    vagrant启动报错The following SSH command responded with a no
    并行进程问题
    利用集群因子优化
  • 原文地址:https://www.cnblogs.com/spareyaya/p/12822129.html
Copyright © 2020-2023  润新知