Redis学习笔记3:五大数据类型(String、List、Set、Hash、Zset)和三种特殊数据类型(geospatial、Hyperloglog、Bitmaps)

介绍:

        Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件MQ,它支持多种类型的数据结构,如字符串( strings ) ,散列(hashes ) ,列表( lists ) ,集合(sets ) ,有序集合(sorted sets)与范围查询,bitmaps, hyperloglogs和地理空间( geospatial )索引半径查询. Redis内置了复制( replication ) , LUA脚本(Lua scripting ) , LRU驱动事件( LRU eviction ) ,事务(transactions )和不同级别的磁盘持久化( persistence ) ,并通过Redis哨兵(Sentinel )和自动分区( Cluster )提供高可用性(high availability ).

基础命令:

127.0.0.1:6379> ping #测试链接
PONG #连接成功

一、五大数据类型

1.String

介绍:

String 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字。

常用命令:get、set、incr、decr、mget等。

使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。

实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。

1.设置字符串、判断是否存在、追加字符串、字符串长度、截取、替换

127.0.0.1:6379> set key1 v1 #设置值
OK
127.0.0.1:6379> get key1 #获得值
"v1"
127.0.0.1:6379> keys * 获得所有的key
1) "key1"
127.0.0.1:6379> exists key1 #判断是否存在key1
(integer) 1
127.0.0.1:6379> append key1 hello #追加字符串,如果key不存在,就相当于setkey
(integer) 7
127.0.0.1:6379> get key1
"v1hello"
127.0.0.1:6379> strlen key1 #获取字符串长度
(integer) 7

127.0.0.1:6379> getrange key1 0 3 #截取字符串
"v1he"
127.0.0.1:6379> getrange key1 0 -1 #查看字符串
"v1hello"
127.0.0.1:6379> setrange key1 1 xx #字符串替换
(integer) 7
127.0.0.1:6379> get key1
"vxxello"

 2.设置过期时间setex、setnx

#setex (set with expire) #设置过期时间
#setnx (set if not exist) #不存在再设置(在分布式锁中会常常使用! )
127.0.0.1:6379> setex key3 30 "hel1o" #设置key3的值为hel1o, 30秒后过期
оK
127.0.0.1:6379> ttl key3
(integer) 26
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> setnx mykey "redis" #如果mykey不存在,创建mykey
(integer) 1
127.0.0.1:6379> keys *
1) "key2"
2) "mykey"
3) "keyl"
127.0.0.1:6379> tt1 key3
(integer) -2
127.0.0.1:6379> setnx mykey "MongoDB" #如果mykey存在,创建失败!
(integer) 0
127.0.0.1:6379> get mykey
"redis"

3.同时设置多个值

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 # 同时设置多个值
OK
127.0.0.1:6379> keys *
1) "k1"
2) "K2"
3) "k3"
127.0.0.1:6379> mget k1 k2 k3 # 同时获取多个值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4 #msetnx是一个原子性的操作,要么一起成功,要么一起失败!
(integer) 0
127.0.0.1:6379> get k4
(nil)

4.设置对象值

#对象
set user:1 {name:zhangsan, age:3} #设置一个user:1对象 值为json字符来保存一个对象!
#这里的key是一个巧妙的设计: user:[id} :{filed} ,如此设计在Redis中是完全0K了!
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 2
ОK
127.0.0.1:6379> mget user:1:name user:1: age
1) "zhangsan"
2)"2"

5.getset 组合命令

getset#先get然后再set
127.0.0.1:6379> getset key redis #如果不存在值,则返回nil
(nil)
127.0.0.1:6379> get key
"redis"
127.0.0.1:6379> getset key mongodb #如果存在值,获取原来的值,并设置新的值
"redis"
127.0.0.1:6379> get key
"mongodb"

 6.计数(阅读量)

127.0.0.1:6379> set 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值