• 学习总结-Redis


    一,简介

    redis(Remote Dictionary Server)是一种Nosql技术,它是一个开源的高级kv存储和数据结构存储系统,它经常被拿来和Memcached相比较,但是Memcached不提供持久化的数据保存机制而redis可以将数据保存在磁盘中,redis不仅仅是能够存储key和value这种简单的键值对,还能存储例如集合、hash表、列表、字典等。redis在整个运行过程中,数据统统都是存储在内存中的,因此,性能是相当高的,由于此特性,redis对于内存的要求比较高,它会周期性的将内存中的数据写入在磁盘中,从而实现数据持久化的访问能力,但是这种存储只是保证redis在下次启动还有数据可以读取,而不是提供访问。redis是单线程服务的,只有一个线程。redis还支持主从模式以及支持通过lua脚本去编写扩展,并且支持高可用和分布式集群解决方案。

    二,特点

    1,运行在内存

    2,持久化

    3,主从(借助于sentinel实现一定意义上的HA)

    4,Clustering(分布式存储)

    5,数据机构服务器:支持存储string、list、hash、set、Sorted Set,Bitmap,HyperLoglogs

    6,能够作为队列使用

    三,Redis的组件

    redis-server

    redis-cli

    redis-benchmark(压测工具)

    redis-check-dump && redis-check-aof 能够去检测文件是否损坏两种格式RDB/AOF格式

    四,redisLinux上的安装

    1,安装redis编译的c环境,yum install gcc-c++

    2,将redis-3.0.0.tar.gz上传到Linux系统中

    3,解压到/usr/local下 tar -xvf redis-3.0.0.tar.gz -C /usr/local

    4,进入redis-3.0.0目录 使用make命令编译redis

    5,在redis-3.0.0目录中使用make PREFIX=/usr/local/redis install命令安装redis到/usr/local/redis中

    6,拷贝redis-redis-3.0.0中的redis.conf到安装目录redis的bin

    7,启动redis 在bin下执行命令redis-server redis.conf

    后端启动Redis:

    修改redis.conf配置文件,daemonize yes 以后端模式启动

    启动:

    关闭redis:

    或者

    8,如需远程连接redis,需配置redis端口6379在linux防火墙中开发

    /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

    /etc/rc.d/init.d/iptables save

    五,jedis操作Redis

    1,导入Jar

    2,创建一个JedisTest类:

    2jedis的连接池使用

    六,Redis常用操作

    redis是一种高级的key-value的存储系统。

    其中的key是字符串类型,尽可能满足如下几点:

    1)key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低查找                效率

    2)key不要太短,如果太短会降低key的可读性

    3)在项目中,key最好有一个统一的命名规范(根据企业的需求)

    其中value支持五种数据类型:

    1)字符串型 string

    2)字符串列表 lists

    3)字符串集合 sets

    4)有序字符串集合 sorted sets

    5)哈希类型 hashs

    1.存储字符串string

    字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M

    1

    set key value 设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回"OK

    2

    get key 获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value 如果该key不存在,返回null。

    3

    getset key value 先获取该key的值,然后在设置该key的值。

    4

    del key 删除指定key

    5

    incr key 将指定的key的value原子性的递增1.如果该key不存在,其初始值为0,在incr之后其值为1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。

      

    6

    decr key 将指定的key的value原子性的递减1.如果该key不存在,其初始值为0,在incr之后其值为-1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。

    如果不是数字则报错:

    7

    incrby key increment 将指定的key的value原子性增加increment,如果该key不存在,器初始值为0,在incrby之后,该值为increment。

    如果该值不能转成整型,如hello则失败并返回错误信息

    8

    decrby key decrement 将指定的key的value原子性减少decrement,如果该key不存在,器初始值为0,在decrby之后,该值为decrement。如果该值不能转成整型,如hello则失败并返回错误信息

    9

    append key value(拼接字符串)如果该key存在,则在原有的value后追加该值;如果该key不存在,则重新创建一个key/value

    2.存储hash

    Redis中的Hashe类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

      

    1

    hset key field value为指定的key设定field/value对( 值对)。

    2

    hgetall key获取key中的所有filed-vaule

    3

    hget key field 返回指定的key中的field的值

    4

    hmset key fields 设置key中的多个filed/value

    5

    hmget key fields 获取key中的多个filed的值

    6

    hdel key fields 删除key中的多个filed的值

    7

    del key 删除整个Hash

    8

    hexists key field 判断指定的key中的filed是否存在

    9

    hlen key 获取key所包含的field的数量

    10

    hincrby key field increment 设置key中filed的值增加increment,如:age增加20

    11

    hincrbyfloat key field increment 设置key中filed的值增加increment,如:age增加20.5

    12

    hkeys key 获取所有的key

    3.存储List

    Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)

    一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

    Redis列表命令:

    序号

    命令及描述

    1

    rpush key value 向列表右边增加元素

    2

    rpush key value1 [value2] 向列表右边增加一个或者多个元素

    3

    lrange key start stop 获取列表中的某一片段,将返回start、stop之间的所有元素(包含两端的元素),索引从0开始。索引可以是负数,如:"-1"代表最后边的一个元素。

    4

    lpop key lpop命令从列表左边弹出一个元素,返回弹出的内容

    5

    rpop key rpop命令从列表右边弹出一个元素,返回弹出的内容

    6

    Llen key 获取列表中的元素个数

    7

    Lrem key count value

    Lrem 命令会删除列表中前count个值为value的元素,返回实际删除的元素个数。根据count值的不同,该命令的执行方式会有所不同:

    当count>0时, Lrem 会从列表左边开始删除。

    当count<0时, Lrem 会从列表后边开始删除。

    当count=0时, Lrem 删除所有值为value的元素。

    8

    Lindex key index 获得指定索引的元素值

    9

    Lset key index value 设置指定索引的元素值

    10

    Ltrim key start stop 只保留列表指定片段

      

    11

    Linsert key before|after pivot value 向列表中插入元素

    该命令首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。

    12

    rpoplpush source destination移除列表的最后一个元素,并将该元素添加到另一个列表并返回

    13

      

    4.存储Set

    1

    sadd key values 添加一个或者多个元素

    2

    srem key values 移除一个或者多个元素

    3

    smembers key 获取所有的元素

    4

    sismember key value 判断元素是否在集合中,存在返回1否则返回0

    5

    sdiff key1 key2 获的属于key1并且不属于key2的元素构成的集合

    6

    sinter key1 key2 获得属于key1并且属于key2的元素构成的集合

    7

    sunion key1 key2 获得属于key1或者属于key2的元素构成的集合

    8

    scard key 获得集合中的元素个数

    9

    spop key 从集合中弹出一个元素,由于集合是无序的,所有SPOP命令会从集合中随机选择一个元素弹出

    10

      

    5.存储Sortedset

    Sortedset又叫zset

    Sortedset是有序集合,可排序的,但是唯一。

    Sortedset和set的不同之处,是会给set中的元素添加一个分数,然后通过这个分数进行排序。

    1

    zadd key score member[score member…] 向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。

    2

    zscore key member获取元素的分数

    3

    zrem key member[member…]删除一个或者多个成员,不存在的成员将被忽略。当key存在但不是有序集类型时,返回一个错误。

    红色框里面是没有的成员

    4

    获得排名在某个范围的元素列表

    1)zrange key start stop 按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)

    2)zrevrange key start stop 按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)

    如果需要获得元素的分数的可以在命令尾部加上WITHSCORES参数

    5

    获取元素的排名(排名从0开始)

    1)zrank key member 从小到大获取排名

    2)zrevrank key member 从大到小获取排名

    6

    zrangebyscore key min max [withscores] [limit offset count] 获得指定分数范围的元素,如果需要获得元素的分数的可以在命令尾部加上withscores参数 ,limit offset count 和mysql中的limit使用方式一样

    7

    zincrby key increment member 增加某个元素的分数,返回值的更改后的分数

    8

    zcard key 获得集合中元素的数量

    9

    zcount key min max 获得指定分数范围内的元素个数

    10

    zremrangebyrank key start stop 按照排名范围删除元素

    11

    zremrangebyscore key min max 按分数范围删除元素

    12

      

    6,redis常用命令

    1

    keys 返回满足给定条件的所有key

    2

    exists 确认一个key是否存在

    3

    rename 从命名key

    4

    type 返回key的类型

    5

    设置key的生存时间

    redis在实际使用过程中更多的用作缓存,然而缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁。

    expire key seconds 设置key的生存时间(单位:秒)key在多少秒后会自动删除

    ttl key 查看key剩余的生存时间(返回-2表示已经删除)

    persist key 清除生存时间

    pexpire key milliseconds 生存时间设置单位为:毫秒

  • 相关阅读:
    Spring定时
    随记生成验证码
    缅怀过去
    java运行可以执行文件
    随 记
    TLD生成
    IT鸟的回忆录
    梦之物语
    VINSMono
    WIDOWX 250 6DOF
  • 原文地址:https://www.cnblogs.com/Zender/p/7867991.html
Copyright © 2020-2023  润新知