zoukankan      html  css  js  c++  java
  • 《Redis核心原理与实战》学习笔记3——字符串使用与内部实现原理

    一、简介

    Redis最常用的数据类型有5种,分别是:字符串类型、列表类型、哈希表类型、集合类型、有序集合类型。其中,最常用的是字符串类型。

    字符串类型的全称是Simple Dynamic Strings,简称SDS,它是以键值对key-value的形式进行存储的,根据key来存储和获取value值,在实际项目中应用非常广泛。

    二、字符串类型应用场景

    1、页面数据缓存

    当数据量和并发量达到一定级别后,数据库就会拖慢系统运行,为了避免这种情况发生,我们可以把查询结果放入缓存(Redis)中,让下次同样的查询直接去缓存取结果,而非查询数据库,这样既减少数据库的压力,同时也提高程序的运行速度。

    2、数字计算与统计

    Redis可以用来存储整数和浮点类型的数据,并且可以通过命令直接累加并存储整数信息,这样就省去了每次要先取数据、转换数据、拼加数据、再存入数据的麻烦,只需要一个命令就可以完成此流程。因此可以使用此功能来实现访问量的统计,当有人访问时访问量 +1 即可。

    3、共享Session信息

    使用Session保存用户的会话(登录)状态时,这些Session信息会被保存在服务器端,但这只适用于单系统应用,如果是分布式系统,分布式系统每次会把请求随机分配到不同的服务器,假设用户的Session信息被存储在服务器A,第二次访问时用户被分配到服务器B,但服务器B并没有用户的Session信息,就会出现需要重复登录的问题。

    因此分布式系统,可以借助Redis将Session信息统一存储管理,这样无论请求发送到哪台服务器,服务器都可以去缓存系统获取用户的Session信息,解决了分布式系统下Session存储的问题。

    三、字符串常用命令操作

    1、添加键值对

    语法:

    添加单一键值对:set key value
    添加单一或多个键值对:mset key1 value1 key2 value2...

    127.0.0.1:6379> set cacheStr redis
    OK
    
    127.0.0.1:6379> set key1 redis key2 memcache
    OK
    

    2、获取键值对

    语法:

    获取单一键值对:get key
    获取单一或多个键值对:mget key1 key2 key3...

    127.0.0.1:6379> get cacheStr
    "redis"
    
    127.0.0.1:6379> mget key1 key2
    1) "redis"
    2) "memcache"
    

    3、给键值设置过期时间

    语法:

    a. set key value [expiration EX seconds|PX milliseconds]
    其中:EX表示过期时间单位为秒,PX则为毫秒

    127.0.0.1:6379> get cacheStr ex 1000
    OK
    

    b. setex key seconds value
    此命令设置的过期时间单位为秒

    127.0.0.1:6379> setex cacheStr 1000
    OK
    

    c. psetex key milliseconds value
    此命令设置的过期时间单位为毫秒

    127.0.0.1:6379> psetex cacheStr 1000
    OK
    

    d. ttl key
    此命令用于查询键的过期时间

    127.0.0.1:6379> ttl cacheStr
    (integer) 995
    

    4、给元素追加值

    语法:append key value
    如果key已经存在并且是一个字符串,append命令将指定的value追加到该key原来值的末尾。

    127.0.0.1:6379> append cacheStr memcache  
    (integer) 7
    
    127.0.0.1:6379> get cacheStr
    "redismemcache"
    

    5、查询字符串的长度

    语法:strlen key

    127.0.0.1:6379> strlen cacheStr
    (integer)12
    

    6、数字统计

    a. 给整数类型的值加、减1
    语法:

    加:incr key
    减:decr key

    b. 给key加、减指定的值
    语法:

    加:incrby key value
    减:decrby key value
    如果key不存在,会先初始化此key为0,再进行整数值的加、减。

    四、字符串的内部数据类型

    Redis的字符串对象包含了三种不同的数据类型:int、embstr 和 raw。
    使用object encoding key命令可以查看对象(键值对)存储的数据类型。

    1、int

    整数类型对应int类型:

    127.0.0.1:6379> set key 666
    OK
    127.0.0.1:6379> object encoding key
    "int"
    

    2、embstr

    字符串对应embstr类型:

    127.0.0.1:6379> set key abc
    OK
    127.0.0.1:6379> object encoding key
    "embstr"
    

    3、raw

    当字符串长度大于44字节时,会变为raw类型存储:

    127.0.0.1:6379> set key abcdefghigklmnopqrstyvwxyzabcdefghigklmnopqrs
    OK
    127.0.0.1:6379> object encoding key
    "raw"
    
  • 相关阅读:
    Android开发视频教学第一季(116集)视频&源码下载
    Android开发视频教学第一季(1734集)视频源码下载
    老罗Android开发视频教程( android解析json数据 )4集集合
    Android 亲测源码分享
    老罗Android开发视频教程 (android常用UI编程) 25集集合
    老罗Android开发视频教程 (android常用布局介绍)5集集合
    老罗Android开发视频教程 (android解析xml文件 )3集集合
    Android 开发源码分享
    基于R语言的时间序列分析预测
    .NET新手系列(六)
  • 原文地址:https://www.cnblogs.com/luckyliulin/p/13553973.html
Copyright © 2011-2022 走看看