REmote DIctionary Server(redis)常用指令

Redis 简介REmote DIctionary Server(Redis)

是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
启动redis: redis-server.exe conf/redis-6379.conf
数据类型:hash, string, list, set, nil, sortedset /zset

操作指令

string类型指令

添加修改数据:             set key value   >set username zhangsan 
获取数据:                   get key         >get username 
删除数据:                   del key         >del username
判定性添加数据:        setnx key value     >setnx username zhangsan
添加修改多个数据:           mset key1 value1 key2 value2 …
                     >mset k1 v1 k2 v2 k3 v3 ……
获取多个数据:                  mget key1 key2 ……      > mget k1 k2 k3 ……
获取数据字符个数(字符串长度):strlen key  
>strlen username            (return 8)
>strlen k1                  (return 2)
追加信息到原始信息后面,若没有就创建:
                    append key value
                    >append username 1      (zhangsan1)
                    >append password 123    (123)
设置整形数据自增/自减(默认自增/自减1)
                    incr key 
                    >set num 1
                    >incr/decr num          (2)
                    >incr/decr num          (3)
设置整形数据值自增/自减指定数
                    incrby/decrby key increment 
                    >incrby/decrby num 10   (13)
                    incrbyfloat key increment
                    >incrbyfloat num 1.5    (14.5)
设置数据值具有指定的生命周期(支持自动过期)
                    setex key seconds value
                    setex code 10 abcd
                    milliseconds 毫秒

hash基础操作

添加修改数据        hset key field value
                    >hset user:001 name zhangsan
                    hmset key field1 value1 field2 value2 …
                    >hmset user:001 password 123 age 18
                    hsetnx key field value
                    hsetnx user:001 name lisi
根据key和field获取单个/多个value
                    hget key field
                    >hget user:001 name
                    hgetall key *
                    >hgetall user:001
删除数据            >hdel key field1 [field2 field3…]
                    >hdel user:001 name
                    >hdel user:001 password age
根据key获取field的数量
                    hlen key 
                    >hmset user:001 name zhangsan password 123 age 18
                    hlen user:001
判断指定field是否存在
                    hexists key field
                    >hexists user:001 name      (1)
                    >hexists user:001 name111   (0)
根据key获取单个/所有的字段名field
                    hkey key
                    >hkey user:001
                    hvals key 
                    hvals user:001
设置指定字段的数值增加指定范围
                    hincrby key field increment
                    hincrbyfloat key field increment
                    hget user:001 age           (18)
                    hincrby user:001 age 1      (19)
                    hincrby user:001 age -2     (17)

list基础操作

添加数据—从左侧添加
                    lpush key value1 [value2 value3 …]
                    >lpush list1 a b c      (3--cba)
从右侧添加           rpush key value1 [value2 value3 …]
                    >rpush list1 d e f      (6--def) 
当前数据为:cbadef
范围获取            lrang key start stop
                    lrang list1 0 -1        (cbadef)
                    lrang list1 0  2        (cba)
                    lrang list1 -3 -1       (def)
获取规则            1.从左到右索引cbadef---(0,1,2,3,4,5,6) …
                    2.从右到左索引cbadef---(-6,-5,-4,-3,-2,-1…)
                    Index key index
                    index list1 0
                    index list1 1
                    index list1 -1
移除并返回最左侧和最右侧的元素
                    lpop key 
                    rpop key
                    >lpop list1         (c)
                    >lpop list1     (f)
根据key获取value的个数
                    llen key 
                    llen list1      (4)

key的基础操作

删除操作:del key    >set aa bb 
                    >del aa
                    >get aa         (nil)
                    >hash hash1 k1 v1
                    >hgetall hash1  (k1, v1)
                    >del hash1
                    >hgetall hash1  (empty)
判断key是否存在
                    >set aaa bbb
                    >exists aaa     (1)
                    >exists bbb     (0)
获取key的类型
                    >set mystring hellostring
                    >hset myhash k1 v1
                    >type mystring
                    >type myhash
对list,set中的数据进行排序
                    >sort key
                    >sort key desc
                    >lpush list1 11 2 33 7 5 18
                    >sort list1         (2,5,7,11,18,33)
                    >sort list1 desc    (33,18,11,7,5,2)
对list中的字符串进行排序
                    >sort key alpha
                    >sort key desc alpha
                    >lpush list2 a b c d
                    >sort list2 alpha   (a,b,c,d)
重命名key
                    >set username zhangsan 
                    >set username2 lisi
                    >rename username username2
                    >get username       (nil)
                    >get username2      (zhangsan)
获取key的有效时间
                    >del username zhangsan
                    >ttl username       (-1)
                    >ttl username2      (-2)
                    >setex username3 30 wangwu 
                    >ttl usernmae3      (21)
                    >pttl usernmae2     (15840)
为指定key设置有效时间
                    >hset hash1 k1 v1
                    >ttl hash1
                    >expire hash1 30        (1)
                    >ttl hash1          (20)
                    >hset hash2 k2 v2
                    >ttl hash2
                    >expire hash2 3000
                    >ttl hash2          (26)
                    >pttl hash2             (21380)
切换key从时效性转换为永久性
                    setex username 60 zhangsan
                    ttl username            (55)
                    persist username        (1)
                    ttl username            (-1)
                    
                    
存:zadd key score value
取:方式一:仅获取value 不带分数score 
    zrange key start end 
    方式二:获取value和score
    zrange key start end withscores
删:zrem key value

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容