4、Redis的基本操作使用

学习目标:

1、了解Redis的基本命令介绍

学习过程:

1、赋值与取值

      set key value  赋值

      get key   取值

重点是这个set 值

SET key value [EX seconds] [PX milliseconds] [NX|XX]

将字符串值 value 关联到 key 。

如果 key 已经持有其他值, SET 就覆写旧值,无视类型。

对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。

可选参数:

  •     EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。

  •     PX millisecond :设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。

  •     NX :只在键不存在时,才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value 。

  •     XX :只在键已经存在时,才对键进行设置操作。

示例:

先启动并进入客户端

[root@run1 bin]# ./redis-server /etc/redis.conf 

[root@run1 bin]# ./redis-cli 

127.0.0.1:6379> get name

"liubao"

127.0.0.1:6379> ttl name  # 查看剩余生存时间

(integer) -1

默认是-1表示永不过期。


#使用 EX 选项

127.0.0.1:6379> set expname "baobao" EX 5   # 设置过期时间为 5 秒

OK

127.0.0.1:6379> ttl expname  # 查看剩余生存时间

(integer) 2

127.0.0.1:6379> get expname # 过期就会查询不到了

(nil)

 

#也可以使用EXPIRE 设置过期时间

redis> SET cache_page "www.google.com"

OK

redis> EXPIRE cache_page 30  # 设置过期时间为 30 秒

(integer) 1

redis> TTL cache_page    # 查看剩余生存时间

(integer) 23

redis> EXPIRE cache_page 30000   # 更新过期时间

(integer) 1

redis> TTL cache_page

(integer) 29996

 

# 使用 PX 选项

127.0.0.1:6379> set pxname "baobao" px 6000

OK

127.0.0.1:6379> pttl pxname

(integer) 4231

127.0.0.1:6379> get pxname

"baobao"

127.0.0.1:6379> get pxname

(nil)

 

# 使用 NX 选项

127.0.0.1:6379> set extkey "baobao"

OK    # 键不存在,设置成功

127.0.0.1:6379> set extkey "abc" NX

(nil)   # 键已经存在,设置失败

127.0.0.1:6379> get extkey

"baobao"  # 原值没有修改成功

 

# 使用 XX 选项

127.0.0.1:6379> EXISTS exname 

(integer) 0 #判断释放存在 并不存在

127.0.0.1:6379> set exname "hello" XX

(nil)  # 因为键不存在,设置失败

127.0.0.1:6379> set exname "hello" 

OK  # 先给键设置一个值

127.0.0.1:6379> set exname "hello" XX

OK  # 设置新值成功

127.0.0.1:6379> set exname "abc" XX

OK # 设置新值成功

127.0.0.1:6379> get exname

"abc" #取得最新设置的值

2、判断一个键值是否存在

        exists key

   如果存在,返回整数类型 1 ,否则返回 0

   前面已经有示例了。

 

3、删除键

        del key [key.....]

        可以删除一个或多个键,返回值是删除的键的个数

        注意:不支持通配符删除,但是可以同事删除多个。

   示例:

127.0.0.1:6379> del exname

(integer) 1 #删除一个,并返回删除的个数

127.0.0.1:6379> del extkey name

(integer) 2 #同时删除两个

 

4、获得键值的数据类型

     type key

     返回值可能是 string(字符串类型) hash(散列类型) list(列表类型) set(集合类型) zset(有序集合类型)

    127.0.0.1:6379> set name liubao

    OK

    127.0.0.1:6379> type name

    string

 

5、递增数字

    这个命令虽然只是简单的加1,但是因为redis 所有的命令都是原子性的,因为后台是单线程。我们可以不用考虑并发的问题,可以方便的利用其功能实现简单的计数器功能,我们可以用来序列号生成方案(高并发和数据一致性的保证,以及断电数据不丢失,分布式扩展能力等优势)等等。

     incr key

        当要操作的键不存在时会默认键值为 0  ,所以第一次递增后的结果是 1 ,当键值不是整数时 redis会提示错误

示例:   

127.0.0.1:6379> SET viewcount 10

OK

127.0.0.1:6379> incr viewcount

(integer) 11

 

6、增加指定的整数

        incrby key increment

        incrby 命令与 incr 命令基本一样,只不过前者可以通过 increment 参数指定一次增加的数值如:

         

127.0.0.1:6379>  incrby num 2

(integer) 2 #一次加2

127.0.0.1:6379> get num

"2"

127.0.0.1:6379>  incrby num 3

(integer) 5 #一次加3

127.0.0.1:6379> get num

"5"

 

7、减少指定的整数

        decr key

        decrby key increment

        desc 命令与incr 命令用法相同,只不过是让键值递减

        decrby 命令与 incrby命令用法相同

 

8、增加指定浮点数

        incrbyfloat key increment

        incrbyfloat 命令类似 incrby 命令,差别是前者可以递增一个双精度浮点数,如:

        incrbyfloat num 2.7

        注意: ( 受reids 版本限制,版本需要大于 2.6 版本) 

 

9、向尾部追加值

        append key value

        作用是向键值的末尾追加 value ,如果键不存在则将改键的值设置为 value,即相当于 set key value。返回值是追加后字符串的长度

        如:append foo " hello word!"

  示例

127.0.0.1:6379> set name liu

OK

127.0.0.1:6379> append name bao

(integer) 6

127.0.0.1:6379> get name

"liubao"

 

10、获取字符串长度

        strlen key

        返回键值的长度,如果键不存在则返回0

127.0.0.1:6379> strlen name

(integer) 6

11、 同时 获得/设置 多个键值

        mget key [key.....]

        mset key value [key value .......]

     前面已经有示例了。

12、keys 命令

 注意这个命令已经不建议使用了,因为当redis中有很多key时,特别时keys *命令,很有可能会导致整个服务卡顿的,建议使用scan,这个我们后面再说。

查找所有符合给定模式 pattern 的 key 。       

        ?    匹配一个字符

        *    匹配任意个(包括0个)字符

        []    匹配括号间的任一个字符,可以使用 "-" 符号表示一个范围,如 a[b-d] 可以匹配 "ab","ac","ad"

        \x    匹配字符x,用于转义符号,如果要匹配 "?" 就需要使用 \?

例如:

    KEYS * 匹配数据库中所有 key 。

    KEYS h?llo 匹配 hello , hallo 和 hxllo 等。

    KEYS h*llo 匹配 hllo 和 heeeeello 等。

    KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。

    特殊符号用 \ 隔开

    KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 key ,你最好还是用 Redis 的集合结构(set)来代替。

示例:

redis> MSET one 1 two 2 three 3 four 4  # 一次设置 4 个 key

OK

redis> KEYS *o*

1) "four"

2) "two"

3) "one"

redis> KEYS t??

1) "two"

redis> KEYS t[w]*

1) "two"

 

redis> KEYS *  # 匹配数据库内所有 key

1) "four"

2) "three"

3) "two"

4) "one"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值