0
点赞
收藏
分享

微信扫一扫

Redis数据类型之String

1.string类型数据的基本操作

添加 / 修改数据:set key value

获取数据:get key

删除数据:del key

添加 / 修改多个数据:mset key value key1 value1

获取多个数据:mget key key1

追加信息到原始数据后边(不存在时则添加):append key value

2.string类型 增减操作

设置数据增加指定范围的值:incr key 默认每次加1 | incrby key value 每次新增value

设置数据减少指定范围的值:decr key | decrby key value 跟新增是一回事

应用场景

控制数据库表主键id,为数据库表提供主键生成策略,保证数据表主键的一致性。

3.string类型 时效操作

设置过期时间:setex key seconds value

应用场景

实现限制时间投票功能:例如一个微信一个小时可以投一次实现热点信息:例如电商行业热门商品、新闻网站热门新闻

4.string类型的操作配置

27.0.0.1:6379> set key1 v1 # 设置值

Redis数据类型之String_string类

127.0.0.1:6379> get key1 # 获得值

Redis数据类型之String_string类_02

127.0.0.1:6379> keys * # 获得所有的key

Redis数据类型之String_字符串_03

127.0.0.1:6379> EXISTS key1 # 判断某一个key是否存在

Redis数据类型之String_主键_04

127.0.0.1:6379> APPEND key1 "hello" # 追加字符串,如果当前key不存在,就相当于setkey

Redis数据类型之String_主键_05

127.0.0.1:6379> get key1

Redis数据类型之String_主键_06

127.0.0.1:6379> STRLEN key1 # 获取字符串的长度!

Redis数据类型之String_主键_07

127.0.0.1:6379> APPEND key1 "sj"

Redis数据类型之String_主键_08

127.0.0.1:6379> STRLEN key1

Redis数据类型之String_string类_09

127.0.0.1:6379> get key1

Redis数据类型之String_主键_10

# i++

#步长 i+=

27.0.0.1:6379> set views 0 # 初始浏览量为0

Redis数据类型之String_主键_11

127.0.0.1:6379> get views

Redis数据类型之String_string类_12

127.0.0.1:6379> incr views # 自增1 浏览量变为1

Redis数据类型之String_主键_13

127.0.0.1:6379> incr views

Redis数据类型之String_主键_14

127.0.0.1:6379> get views

Redis数据类型之String_字符串_15

127.0.0.1:6379> decr views # 自减1 浏览量-1

Redis数据类型之String_字符串_16

127.0.0.1:6379> decr views

Redis数据类型之String_字符串_17

127.0.0.1:6379> decr views

Redis数据类型之String_string类_18

127.0.0.1:6379> get views

Redis数据类型之String_主键_19

127.0.0.1:6379> INCRBY views 10 # 可以设置步长,指定增量!

Redis数据类型之String_主键_20

127.0.0.1:6379> INCRBY views 10

Redis数据类型之String_主键_21

127.0.0.1:6379> DECRBY views 5

Redis数据类型之String_主键_22

# 字符串范围 range

127.0.0.1:6379> set key1 "hello,sj" # 设置 key1 的值

Redis数据类型之String_string类_23

127.0.0.1:6379> get key1

Redis数据类型之String_主键_24

127.0.0.1:6379> GETRANGE key1 0 3 # 截取字符串 [0,3]

Redis数据类型之String_string类_25

127.0.0.1:6379> GETRANGE key1 0 -1 # 获取全部的字符串 和 get key是一样的

Redis数据类型之String_string类_26

# 替换!

127.0.0.1:6379> set key2 abcdefg

Redis数据类型之String_字符串_27

127.0.0.1:6379> get key2

Redis数据类型之String_string类_28

127.0.0.1:6379> SETRANGE key2 1 xx # 替换指定位置开始的字符串!

Redis数据类型之String_字符串_29

127.0.0.1:6379> get key2

Redis数据类型之String_字符串_30

# setex (set with expire) # 设置过期时间

# setnx (set if not exist) # 不存在再设置 (在分布式锁中会常常使用!)

127.0.0.1:6379> setex key3 30 "hello" # 设置key3 的值为 hello,30秒后过期

Redis数据类型之String_字符串_31

127.0.0.1:6379> ttl key3

Redis数据类型之String_string类_32

127.0.0.1:6379> get key3

Redis数据类型之String_主键_33

127.0.0.1:6379> setnx mykey "redis" # 如果mykey 不存在,创建mykey

Redis数据类型之String_string类_34

127.0.0.1:6379> keys *

Redis数据类型之String_字符串_35

127.0.0.1:6379> ttl key3

Redis数据类型之String_string类_36

127.0.0.1:6379> setnx mykey "MongoDB" # 如果mykey存在,创建失败!

Redis数据类型之String_主键_37

127.0.0.1:6379> get mykey

Redis数据类型之String_主键_38

#mset

#mget

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 # 同时设置多个值

Redis数据类型之String_主键_39

127.0.0.1:6379> keys *

Redis数据类型之String_string类_40

127.0.0.1:6379> mget k1 k2 k3 # 同时获取多个值

Redis数据类型之String_string类_41

127.0.0.1:6379> msetnx k1 v1 k4 v4 # msetnx 是一个原子性的操作,要么一起成功,要么一起失败!

Redis数据类型之String_主键_42

127.0.0.1:6379> get k4

Redis数据类型之String_主键_43

# 对象

set user:1 {name:zhangsan,age:3} # 设置一个user:1 对象 值为 json字符来保存一个对象!

# 这里的key是一个巧妙的设计: user:{id}:{filed} , 如此设计在Redis中是完全OK了!

127.0.0.1:6379> mset user:1:name zhangsan user:1:age 2

Redis数据类型之String_字符串_44

127.0.0.1:6379> mget user:1:name user:1:age

Redis数据类型之String_string类_45

getset # 先get然后在set

127.0.0.1:6379> getset db redis # 如果不存在值,则返回 nil

Redis数据类型之String_主键_46

127.0.0.1:6379> get db

Redis数据类型之String_字符串_47

127.0.0.1:6379> getset db mongodb # 如果存在值,获取原来的值,并设置新的值

Redis数据类型之String_字符串_48

127.0.0.1:6379> get db

Redis数据类型之String_字符串_49

5.string类型的应用场景

微博大V主页高频的访问,对于粉丝数、关注数、微博数都需要时时更新。这个就属于高频信息了,我们就可以使用redis的string类型来解决在redis中为大V设定用户信息,以用户主键和属性为键值,以下为实现案例。

Redis数据类型之String_主键_50

在这里需要简单的说一下key的命名规则:以表名+主键+主键值+字段 :字段值。以这样的规则来命名就可以很好的来管理我们的键值。

我们还可以使用另外一种方式来实现,就是键后边直接跟一个结构,例如

Redis数据类型之String_string类_51

以上的俩种方式都是可以实现的,只是第一种可以很方便的对任意一个值进行管理,第二种是改一个都得改一次,看业务场景,定时刷新就行。

举报

相关推荐

0 条评论