zoukankan      html  css  js  c++  java
  • redis学习总结(一)

    一 、redis的安装

    1、查看是否有安装gcc tcl 编译环境

    Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。
    Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。

    TCL(Tool Command Language)工具脚本语言,是Linux内的一种语言包。

    查看安装命令: whereis gcc tcl

    安装命令: yum -y install gcc tcl

    2、上传redis安装包,并进行解压

    3、手动对安装包进行编译安装  make && make PREFIX=/opt/xxx/redis install (安装的目录可以随意指定)

    4、配置可执行文件的脚本目录,保证执行脚本可以在任意的目录之下执行

    vi + /etc/profile

    配置完环境变量之后, 读取配置文件(就是一个对配置文件进行编译的过程) source /etc/profile

    5、安装redis内存服务器数据库,并执行 在/software/redis-2.8.18/utils目录下找到 install-server.sh

    ./install-server.sh   执行这个命令

    在安装的过程中可以设置redis对外通讯的端口 ,默认是6379

    /etc/redis/6379.conf  redis是一个内存数据库,有自己的实例,每一个端口代表了当前数据库服务器的一个实例,有自己的配置文件 /etc/redis/6379.conf ,实例与端口号是一一对应的,当在安装一个实例之后,端口号就需要发生变化 ,可以允许创建多个实例

    /var/log/redis_6379.log redis日志的存放目录

    /var/lib/redis/6379: redis持久化数据的存放目录

    /opt/xxx/redis/bin/redis-server 可执行文件的安装目录 (环境变量配置之后才能找到这个目录)

    #----¥以上步骤安装了redis的服务器¥---#

    查看服务器启动的运行命令: redis-server -h 

    查看redis客户端启动的相关命令: redis-cli -h

    创建redis客户端的命令:

    redis-cli  

    redis 支持的数据类型: 字符串、列表、散列、集合、有序集合、HyperLogLog ,所有的数据都是按照k-v键值对的数据类型来进行存储的

    string支持的数据方式: a、基本操作时字符串操作,追加,截取    set、get、append、、、

    b、数值类型的计算

    c、位图计算

    nx --not exists 

    xx --只有存在的时候才进行操作

    一次性的设置多个键值对组合:

    mset k1 a k2 b k3 c

    mget ....

    设置一个键的存活时间

    expire key seconds

    查看剩余的时间

    TTL key

    PTTL key

    key存在但没有设置TTL,返回-1   key存在,但还在生存期内,返回剩余的秒或者毫秒  key曾今存在,但已经消亡,返回-2

    查看一个键的长度: STRLEN key

    查看一个键的数据类型:type key     OBJECT encoding key (查看底层存储的数据结构)

    对key值进行数据运算:INCR k3     INCRBY key number (指定增长的步长)

    返回旧值并设置新值:GETSET KEY VALUE

    对key值进行位图计算: SETBIT key offset value 

    .offset 偏移量。从0开始

    查看某个值在key中第一次出现的位置: BITPOS  key value

    bit位进行运算: BITOP and k3 k1 k2 (对k1,k2进行与运算,然后将运算的结果放置到k3中 )

    统计字符串之上所有bit位为1的个数: BITCOUNT KEY [START] [END]

    注意:在redis数据库中可以创建无数个实例,但每个实例可以操作的数据库数量是16个 

    FLUSHALL:该命令会清空当前实例下数据库下面的所有的数据

    FLUSHDB:只清空当前数据库中所有的数据

    登录不同的数据库: redis-cli -n 2

    List 列表、数组

    1、基于Linked list 实现  2、元素是字符串类型的 3、列表头尾增删快,中间增删慢,增删元素是常态

    4、元素可以重复的出现    5、最多可以包含2^32 -1 个元素

    命令:

    命令流程:

    B block块,阻塞   Lleft 左  R right 右  X exists: 存在才执行

    左右或者头尾压入元素: String set key "abc"

    LPUSH key value  [value.......]

    LPUSHX key value 

    RPUSH key value [value.....]

    RPUSHX key value

    list 同时具备了队列、栈、数组、阻塞队列的所有特点

    获取指定位置的元素: LINDEX key index

    设置指定位置的元素: LSETkey index value

    列表长度、元素个数: LLEN key LRANGE key 0 -1 

    从列表头部开始删除等于value的元素count次,LIST可以重复出现 : LREM key count value 

    count>0 : 从表头开始向表尾搜索,移除与value相等的元素,数量为count

    count<0: 从表头开始向表尾搜索,移除与value相等的元素,数量为count 的绝对值

    去除指定范围外的元素:LTRIM key start stop 

    在指定的位置插入一条数据: LINSERT key before/after value1 value2 

    阻塞: 如果弹出的列表不存在或者为空,就会阻塞 

    超时时间设置为0,就是永久阻塞,知道有数据可以弹出

    如果多个客户端阻塞到同一个列表之上,使用FIRST IN FIRSY SERVICE原则,先到先服务

    左右或者头尾阻塞或者弹出元素 :

    BLPOP key [key....] timeout

    BRPOP key [key....] timeout

    从一个列表尾部阻塞弹出元素压入到另一个列表的头部:

    BRPOPLPUSH source destination timeout

    hash 散列:

    由field和关联的value组成的map键值对,field和value是字符串类型的数据

    一个hash最多包含2^32-1键值对

    设置单个字段: HSET key field value 

    设置多个字段: HMSET key field value 

    返回字段个数:HLEN key

    判断字段是否存在: HEXISTS key exists 

    hash用途:  节约内存空间   每创建一个键,他都会为这个键创建一些附加管理的信息(比如这个键的类型,这个键最后一次呗访问的时间等等)

    所以数据库有里面的键越多,redis数据库服务器在存储附加管理信息方面耗费的内存就会越多,花在管理数据库键上的CPU也会越多在字段的值上进行浮点数的增量计算 

    set集合:无序的,去重的,元素是字符串类型

    增加一个或者多个元素: SADD key  number (如果元素已经存在,则自动进行忽略)

    移除一个元素: SREM key member (元素不存在的时候,进行自动的忽略)

    返回结合包含的所有元素: SMEMBERS key  (如果集合元素过多,例如有百万个,需要遍历,可能会造成服务器的阻塞,生产坏境应避免使用)

    检查给定元素是否存在于集合之中: SISMEMBER key member 

    随机返回集合中指定个数的元素:  SRANDMEMBER key [count]

    如果count为正数,且小于集合基数,那么命令返回一个包含count个元素的数组,数组中的元素各不相同。如果count大于等于集合基数,那么返回整个集合

    返回集合中元素的个数: SCARD key   键的结果会保存信息,集合长度就记录在里面,所以不需要遍历

    随机从集合中移除并返回这个被移除的元素: SPOP key

    把元素从源集合移动到目标集合:   SMOVE source destination member

    set 集合的操作 

    差集   SDIFF key [key ...]  从第一个集合中去除其他集合中与自己有交集的部分

    SDIFFSTORE destination key[key......] ,将差集结果存储在目标key中 

    交集: SINTER key [key.....],取所有集合交集部分 

    SINTERSTORE destination key[key....]

    并集: SUNION key [key....]

    sortedSet 有序集合:

    类似于set集合,有序的、去重的,元素是字符串类型,每一个元素都关联着一个浮点数分值(score),并按照分值从小到大的顺序进行排列 ,分值可以相同

    增加一个或者多个元素:ZADD key score member [score member....]

    移除一个或多个元素:ZREM key member [member.....]

    显示分值: ZSCORE key member 

    增加或者减少分值:ZINCRBY key increment member 

    increment为负数就是减少 

    返回元素的排名(索引)

    ZRANK key member

    返回元素的逆序排名:ZREVRANK key member

    返回指定索引区间元素:ZRANGE key start stop [WITHSCORES],如果score相同,则按照字典序排序

    默认按照score从小到大,如果需要score从大到小,使用ZREVRANGE 

    返回指定索引区间元素:ZREVRANGE key start stop

    返回指定分值区间元素: ZRANGEBYSCORE key min max [withscores] [limit offset count]

    返回score默认属于【min,max】之间,元素按照score升序排列,score相同字典序

    LIMIT中offset代表跳过多少个元素,count是返回几个,类似于mysql

    使用小括号,修改区间为开区间

    返回指定分值区间元素: ZREVRANGEBYSCORE key  min max [withscores] [limit offset count]

    移除指定排名范围的元素: ZREMRANGEBYRANK key start stop 

    移除指定分值范围元素:ZREMRANGEBYSCORE key min max 

    返回集合中元素个数: ZCARD key

    并集:

    ZUNIONSTORE destination numkeys key [key...] [WEIGHTS weight] [aggregate sum|min|max]

    numkeys:指定key的数量,必须

    weights选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重

    AGGREGATE选项,指定并集结果的聚合方式

    sum:将所有集合中某一个元素的score值之和作为结果集中该成员的score值 

    交集: ZINTERSTORE destination numbers key [key....] [weights weight]

  • 相关阅读:
    LeetCode Medium:15. 3Sum
    LeetCode Medium:12. Integer to Roman
    LeetCode Medium: 11. Container With Most Water
    TypeError: unsupported operand type(s) for /: 'map' and 'int'
    【C#】课堂知识点#4
    【C#】课堂知识点#3
    【统计与建模】R语言基本操作
    【题解】表达式的值
    【题解】瑞士轮
    【题解】道路游戏
  • 原文地址:https://www.cnblogs.com/wcgstudy/p/11136057.html
Copyright © 2011-2022 走看看