首页 > 数据库 >Redis数据类型之String

Redis数据类型之String

时间:2023-06-11 19:32:50浏览次数:45  
标签:127.0 String get 0.1 数据类型 key1 Redis 6379 key

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_主键_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_string类_08

127.0.0.1:6379> STRLEN key1

Redis数据类型之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_字符串_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_string类_15

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

Redis数据类型之String_字符串_16

127.0.0.1:6379> decr views

Redis数据类型之String_string类_17

127.0.0.1:6379> decr views

Redis数据类型之String_字符串_18

127.0.0.1:6379> get views

Redis数据类型之String_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_字符串_23

127.0.0.1:6379> get key1

Redis数据类型之String_string类_24

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

Redis数据类型之String_字符串_25

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

Redis数据类型之String_主键_26

# 替换!

127.0.0.1:6379> set key2 abcdefg

Redis数据类型之String_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_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_主键_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_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_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_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_string类_44

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

Redis数据类型之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_string类_47

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

Redis数据类型之String_string类_48

127.0.0.1:6379> get db

Redis数据类型之String_string类_49

5.string类型的应用场景

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

Redis数据类型之String_string类_50

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

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

Redis数据类型之String_字符串_51

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

标签:127.0,String,get,0.1,数据类型,key1,Redis,6379,key
From: https://blog.51cto.com/u_15130867/6458627

相关文章

  • Redis服务的集中监控
    一:redmon的安装和使用1:安装rvm,rvm是rubyversionmanager的缩写,ruby语言是鬼子弄出来的,虽然不是程序员,我也一直不待见,真心觉得难用!#bash<<(curl-shttps://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)#echo'[[-s"$HOME/.rvm/scripts/rvm"]]&&......
  • Python使用Redis实现一个简单作业调度系统
        概述Redis作为内存数据库的一个典型代表,已经在很多应用场景中被使用,这里仅就Redis的pub/sub功能来说说怎样通过此功能来实现一个简单的作业调度系统。这里只是想展现一个简单的想法,所以还是有很多需要考虑的东西没有包括在这个例子中,比如错误处理,持久化等。下面是实现上......
  • STL-string(ACM)
    1.相当于加了一些操作的vector<char>基本操作字符串转换(C++11)//将字符串转换为整型stoi()//将字符串转换为longlongstoll()//将字符串转换为float型stof()//将字符串转换为double型stod()后面加入s+=t;//时间复杂度O(t)s.push_back();字符串替换......
  • Django使用redis缓存服务器
        redis相信大家都很熟悉了,和memcached一样是一个高性能的key-value数据库,至于什么是缓存服务器,度娘都有很明白的介绍了,我在这里就不一一介绍了。那我们一般什么情况下才会使用缓存服务器呢?可不是什么情况都需要的哦,一般来说是在需要频繁对一个字段读取的时候才会需要将这......
  • Redis学习笔记4-脚本、持久化和集群 Redis学习笔记1-基础命令及数据结构: http://blog.
        Redis学习笔记4-脚本、持久化和集群Redis学习笔记1-基础命令及数据结构:http://blog.guoyb.com/2016/07/21/learn-redis-basic-commands/Redis学习笔记2-事务与过期时间:http://blog.guoyb.com/2016/08/23/learn-redis-adv/Redis学习笔记3-排序与消息通知:http://blog......
  • Redis之Redisson原理详解
    目录1Redisson1.1简介1.2与其他客户端比较1.3操作使用1.3.1pom.xml1.3.2配置1.3.3启用分布式锁1.4大致操作原理1.5RLock1.5.1RLock如何加锁1.5.2解锁消息1.5.3锁续约1.5.4流程概括1.6公平锁1.6.1java中公平锁1.6.2RedissonFairLock1.6.3公平锁加锁步骤1Redisso......
  • NoSQL生态系统——类似Bigtable列存储,或者Dynamo的key存储(kv存储如BDB,结构化存储如red
    摘自:http://www.ituring.com.cn/article/4002#NoSQL系统的数据操作接口应该是非SQL类型的。但在NoSQL社区,NoSQL被赋予了更具有包容性的含义,其意为NotOnlySQL,即NoSQL提供了一种与传统关系型数据库不太一样的存储模式,这为开发者提供了在关系型数据库之外的另一种选择。在关联型的数......
  • Redis
    Redis1Nosql概述1.1为什么要用Nosql单机MySQL的年代90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够!那个时候,更多的去使用静态页面Html~,服务器根本没有太大的压力!思考一下,这种情况下:整个网站的瓶颈是什么?1.数据量如果太大,一个机器放不下了!2.数据的索引(B+T......
  • 互联网公司面试必问的Redis题目
    作为一个后端开发人员,在面试的时候,Redis是必问的,那么下面咱们来把Redis一般面试常问问题汇总一下。介绍Redis是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API的非关系型数据库。A=原子性(Atomici......
  • System.SysUtils.TStringHelper
    大小写转换:functionToLower:string;functionToLower(LocaleID:TLocaleID):string;functionToLowerInvariant:string;functionToUpper:string;functionToUpper(LocaleID:TLocaleID):string;functionToUpperInvariant:string;classfunctionLowerCase(cons......