Redis的数据类型及操作

 创建获得创建(覆盖原有值)删除批量创建不存在值批量创建值(覆盖原有值)批量获得  
string(字符串类型)appendgetsetdelmsetnxmsetmget  
hash(哈希类型)hsethgethsetnxhdel hmsethmget  

list(字符串链表)

以从左向右插入为例

lpushlrangelpushxlrem     
          

一、string     

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

1. APPEND/GET/SET/DEL/STRLEN/ SETNX        #创建/获得/创建(覆盖原有值)/删除/显示字符长度/对不存在键设置值

192.168.65.152:6379> APPEND ak1 1              创建新值 1
(integer) 1
192.168.65.152:6379> GEt ak1                         获得该新值 1
"1"

192.168.65.152:6379> set sk1 2                        建立新值覆盖原有1 成为2
OK
192.168.65.152:6379> get sk1
"2"
192.168.65.152:6379> strlen sk1                       显示字符长度
(integer) 1
192.168.65.152:6379> del sk1                          删除
(integer) 1
192.168.65.152:6379> setnx sk10 10                sk10 不存在 若存在无任何效果
(integer) 1
192.168.65.152:6379> get sk10
"10"

192.168.65.152:6379> setnx sk10 20
(integer) 0
 

2. INCR/DECR/INCRBY/DECRBY                   #递增+1/递减-1/指定增加/指定减少

192.168.65.152:6379> get sk1                          此时值为“2”
"2"

192.168.65.152:6379> incr sk1                          +1
(integer) 3
192.168.65.152:6379> decr sk1                         -1
(integer) 2
192.168.65.152:6379> incrby sk1 10                   指定值增加10
(integer) 12
192.168.65.152:6379> get sk1
"12"
192.168.65.152:6379> decrby sk1 10                 指定值减少10
(integer) 2

192.168.65.152:6379> get sk1
"2"

3. SETEX                                   #指定时间后过期

192.168.65.152:6379> setex sk1 5 2                    指定5s后“2”值过期
OK 
192.168.65.152:6379> get sk1
"2"
192.168.65.152:6379> get sk1
(nil)

4. SETRANGE/GETRANGE                                    指定从x个字节开始替换/显示从x~x字节值

192.168.65.152:6379> APPEND sk2 redhat                设置初始值为Redhat
(integer) 6
192.168.65.152:6379> SETRANGE sk2 3 ooo              将2~3字节为ooo
(integer) 6
192.168.65.152:6379> get sk2
"redooo"

192.168.65.152:6379> GETRANGE sk2 1 3             显示1~3字节值
"edo"
192.168.65.152:6379> get sk2
"redooo"
 

5、MSET/MSETNX/MGET                   批量设置新值(可覆盖)/批量设置不存在值/批量获得           

192.168.65.152:6379> mset sk1 "liu" sk2 "wang"                      批量添加“liu”  “wang”
OK
192.168.65.152:6379> msetnx sk3 "zhang" sk4 "li"                    批量添加不存在值 “zhang” “li”

(integer) 1
192.168.65.152:6379> mget sk1 sk2 sk3 sk4                              批量获得各值
1) "liu"
2) "wang"
3) "zhang"
4) "li"

二、hash

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

1. HSET/HGET/HDEL/HEXISTS/HLEN/HSETNX                         创建新值/获得/删除/判断是否存在/获取字段数量/创建不存在值

192.168.65.152:6379> hset hk1 1 a
(integer) 0
192.168.65.152:6379> hget hk1 1
"a"
192.168.65.152:6379> hdel hk1 1
(integer) 1
192.168.65.152:6379> hexists hk2 3                                                        #不存在显示为0
(integer) 0
192.168.65.152:6379> hset hk2 2 b
(integer) 1
192.168.65.152:6379> hlen hk2
(integer) 1

192.168.65.152:6379> hsetnx hk2 3 c
(integer) 1
 

2. HINCRBY                                                                     字段值增减

192.168.65.152:6379> hset hk3 1 1                              新添加1字段 值为1
(integer) 1
192.168.65.152:6379> hincrby hk3 1 1                             值增加1             
(integer) 2
192.168.65.152:6379> hget hk3 1
"2"
192.168.65.152:6379> hincrby hk3 1 -10                        值增加-10
(integer) -8
192.168.65.152:6379> hget hk3 1
"-8"

3. HMSET/HMGET/HGETALL/HKEYS/HVALS                           批量   添加/获取/获取所有字段和值/获取所有字段/获取所有值

92.168.65.152:6379> hmset hk4 1 a 2 b 3 c
OK
192.168.65.152:6379> hmget hk4 1 2 3
1) "a"
2) "b"
3) "c"
192.168.65.152:6379> hmget hk4 1 2 3 4                            4字段不存在,显示为(nil)
1) "a"
2) "b"
3) "c"
4) (nil)
192.168.65.152:6379> hgetall hk4
1) "1"
2) "a"
3) "2"
4) "b"
5) "3"
6) "c"
192.168.65.152:6379> hkeys hk4
1) "1"
2) "2"
3) "3"
192.168.65.152:6379> hvals hk4
1) "a"
2) "b"
3) "c"
 

 三、list 

在Redis中,List类型是的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部 (right)添加新的 元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反, 如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。 List中可以包含的大元素数量 是4294967295。   

1. LPUSH/LPUSHX/LRANGE                                     从左至右插入/从左边插入值(存在键时)/根据范围获得

192.168.65.152:6379>  lpush lk1 a b c d                                  从左至右插入      d为头部
(integer) 4
192.168.65.152:6379> lrange lk1 0 -1                                      0 -1 表示全部   
1) "d"                        2
2) "c"                        1
3) "b"                        0
4) "a"

192.168.65.152:6379> lrange lk1 0 2
1) "d"
2) "c"
3) "b"

192.168.65.152:6379> lpushx lk1 e                                        插入到1)位置 最左边
(integer) 5
192.168.65.152:6379> lrange lk1 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
192.168.65.152:6379> lpushx lk2 e
(integer) 0
192.168.65.152:6379> lrange lk2 0 -1
(empty list or set)

2. LPOP/LLEN                                         弹出头部(最左边)/查看元素数量

192.168.65.152:6379> lpop lk1                               
"e"
192.168.65.152:6379> lpop lk1
"d"
192.168.65.152:6379> llen lk1
(integer) 3

3.LREM/LINDEX/LSET/LTRIM                               指定元素数量删除/查看指定位置元素/指定位置插入元素/ 保留范围内元素    

192.168.65.152:6379> lpush lk2 a b a c d b a d
(integer) 8
192.168.65.152:6379> lrem lk2 2 a                                            删除距离头部最近的2个a
(integer) 2
192.168.65.152:6379> lrange lk2 0 -1
1) "d"
2) "b"
3) "d"
4) "c"
5) "b"
6) "a"
192.168.65.152:6379> lindex lk2 2                                     索引值0:“d”  1:“b” 2:“d”  3:“c” ........
"d"
192.168.65.152:6379> lset lk2 1 a                                    在1位置插入“a”
OK
192.168.65.152:6379> lrange lk2 0 -1
1) "d"
2) "a"
3) "d"
4) "c"
5) "b"
6) "a"
192.168.65.152:6379> ltrim lk2 0 2                                   保留0~2值
OK
192.168.65.152:6379> lrange lk2 0 -1
1) "d"
2) "a"
3) "d"
 

4. LINSERT      +before/after                                     在指定元素之前/后插入元素 

192.168.65.152:6379> lpush lk3 a b c d e
(integer) 5
192.168.65.152:6379> linsert lk3 before a 1                           在“a”之前插入1 
(integer) 6
192.168.65.152:6379> lindex lk3 0
"e"
192.168.65.152:6379> lrange lk3 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "1"
6) "a"
192.168.65.152:6379> linsert lk3 after a 2                               在“a”之后插入2 
(integer) 7
192.168.65.152:6379> lrange lk3 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "1"
6) "a"
7) "2"

5. RPUSH/RPUSHX/RPOP   与头部用法相同                   从右至左插入值/从右边插入值(存在键时)/  弹出尾部(最边右)/

192.168.65.152:6379> rpush rk1 a b c d
(integer) 4
192.168.65.152:6379> lrange rk1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
192.168.65.152:6379> rpushx rk1 1
(integer) 5
192.168.65.152:6379> lrange rk1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "1"
192.168.65.152:6379> rpop rk1
"1"

四、key

   在前面主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些 命 令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。下面主要讲述与Key相关的 Redis命令。学习这些命令对于学习 Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器 

   1、KEYS/DEL/EXISTS/RENAME/MOVE        查看关联key/删除/存在/改名/移动

192.168.65.152:6379> set sk1 1                          
OK
192.168.65.152:6379> set sk1 2
OK
192.168.65.152:6379> set sk1 3
OK
192.168.65.152:6379> hset hk1 1 a
(integer) 1
192.168.65.152:6379> hset hk1 2 b                        # 设置测试环境
(integer) 1

192.168.65.152:6379> keys *                                  #查看所有键值
1) "sk1"
2) "hk1"
192.168.65.152:6379> del sk1 1                            #删除sk1

(integer) 1
192.168.65.152:6379> get sk1  
(nil)
192.168.65.152:6379> exists sk1                               #查看sk1是否存在
(integer) 0
192.168.65.152:6379> exists hk1                                #存在为“1” 不存在为“0”
(integer) 1

192.168.65.152:6379> move hk1 1                              #移动
(integer) 1
192.168.65.152:6379> select 1                                   #选择数据库                
OK
192.168.65.152:6379[1]> exists hk1
(integer) 1
192.168.65.152:6379[1]> select 0
OK
192.168.65.152:6379> exists hk1
(integer) 0
192.168.65.152:6379> 
192.168.65.152:6379> set mykey "hello"
OK
192.168.65.152:6379> rename mykey mykey1                      #改名
OK
192.168.65.152:6379> get mykey
(nil)
192.168.65.152:6379> get mykey1
"hello"


2、EXPIRE/PERSIST/TTL              设置键超时时间/去掉超时时间,使键成为永久键/查看剩余时间

192.168.65.152:6379> set mykey "hello"
OK
192.168.65.152:6379> expire mykey 100                            #设置超时时间为100秒
(integer) 1
192.168.65.152:6379> ttl mykey
(integer) 94
192.168.65.152:6379> persist mykey                                    #使超时时间立即失效
(integer) 1
192.168.65.152:6379> ttl mykey
(integer) -1
192.168.65.152:6379> del mykey
(integer) 1
192.168.65.152:6379> set mykey "hello"
OK
192.168.65.152:6379> expire mykey 20
(integer) 1
192.168.65.152:6379> ttl mykey
(integer) 11
 

3. TYPE/RANDOMKEY/                    查看键类型/返回数据库任意键

192.168.65.152:6379> set mykey 1
OK
192.168.65.152:6379> TYPE mykey
string

192.168.65.152:6379> hset mykey111 1 a
(integer) 1
192.168.65.152:6379> TYPE mykey111
hash
192.168.65.152:6379> randomkey
"mykey111"
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值