zoukankan      html  css  js  c++  java
  • Redis的基本操作

    我们购买一件商品时,首先是通过各种途径了解商品的性能和使用价值,接下来才是根据说明书查看商品的使用操作,入门Redis也一样,知道了Redis是什么,为什么使用Redis,接下来就是了解Redis的各种功能了。

    1.服务器中的数据库

    Redis是一个key-value的数据库服务器,它将所有的数据库都保存在服务器状态redisServer结构的db数组中。

    struct redisServer{
    ... int dbnum; redisDb *db;
    ... }

     db数组中的每个项都是redisDb结构,一个db数组保存着服务器中所有的数据库,Redis服务器默认会创建16个数据库,服务器在初始化时会根据dbnum的值创建对应数量的数据库。

    2.Redis的基本操作

    redisDb结构的db数组中保存了所有的数据库,也就是redisDb结构同时存储着数据库的基本操作。

    typedef struct redisDb{
    ... dict *dict;
    dict *expires;
    ... }redisDb;

     redisDb结构的dict保存了数据库中所有的键值对,称dict为键空间。

    2.1键空间的使用方法

    1)添加键

    redis> SET message "hello world"
    OK
    
    redis> RPUSH alphabet "a" "b" "c"
    (integer) 3
    
    redis> HSET book name "Redis in Action"
    (integer) 1
    
    redis> HSET book author "Josiah L. Carlson"
    (integer) 1
    
    redis> HSET book publisher "Manning"
    (integer) 1
    
    • alphabet 是一个列表键, 键的名字是一个包含字符串 “alphabet” 的字符串对象, 键的值则是一个包含三个元素的列表对象。
    • book 是一个哈希表键, 键的名字是一个包含字符串 “book” 的字符串对象, 键的值则是一个包含三个键值对的哈希表对象。
    • message 是一个字符串键, 键的名字是一个包含字符串 “message” 的字符串对象, 键的值则是一个包含字符串 “hello world” 的字符串对象。

    执行上述操作之后,数据库中的键空间如下图:

    添加新键:

    redis> SET date "2013.12.1"
    OK
    

    添加新键之后,数据库中的键空间多了一个键值对,键为包含date字符串的对象,值为包含2013.12.1的字符串对象。

     

    2)删除键

    redis> DEL book
    (integer) 1
    

    删除键实际上就是删除键空间中相对应的键值对。

     

    3)更新键

    redis> SET message "blah blah"
    OK
    

     更新键的操作是更新键空间中键值对中键对应的值。

    4)对键取值

    redis> GET message
    "hello world"
    

    2.2设置键的生存时间或过期时间

    Redis 有四个不同的命令可以用于设置键的生存时间(键可以存在多久)或过期时间(键什么时候会被删除) :

    • EXPlRE 命令用于将键key 的生存时间设置为ttl 秒;
    • PEXPIRE 命令用于将键key 的生存时间设置为ttl 毫秒;
    • EXPIREAT < timestamp> 命令用于将键key 的过期时间设置为timestamp所指定的秒数时间戳;
    • PEXPIREAT < timestamp > 命令用于将键key 的过期时间设置为timestamp所指定的毫秒数时间戳。

    Redis通过exipre或则pexpire命令,可以以秒或则毫秒为精度为某个key设置过期时间,在经过指定的时间之后,redis服务器就会删除生存时间为0的key。

    下面的例子中把key1的过期时间设置为40秒,过40秒后redis就会吧key1删除。

    127.0.0.1:6379> set key1 'value1'
    OK
    127.0.0.1:6379> exipre key1 40
    (error) ERR unknown command 'exipre'
    127.0.0.1:6379> expire key1 40
    (integer) 1
    127.0.0.1:6379> get key1
    "value1"
    127.0.0.1:6379> get key1
    "value1"
    127.0.0.1:6379> get key1
    (nil)
    127.0.0.1:6379>
    

     etex命令可以在设置一个字符串key的时候,同时设置该key的过期时间,因为这个命令是一个类型限定的命令(只能用于字符串键),但SETEX 命令设置过期时间的原理和EXPIRE命令设置过期时间的原理是完全一样的。

    与EXPlRE 命令和PEXPIRE 命令类似,客户端可以通过EXPlREAT 命令或PEXPlREAT命令,以秒或者毫秒精度给数据库中的某个键设置过期时间(expire time)。过期时间是一个UNIX时间戳,当键的过期时间来临时,服务器就会自动从数据库中删除这个键:

    使用方式如下:

    127.0.0.1:6379> set key1 'value1'
    OK
    127.0.0.1:6379> expireat key1 1545470885
    (integer) 1
    127.0.0.1:6379> time
    1) "1545470897"
    2) "996846"
    127.0.0.1:6379> get key1
    (nil)
    127.0.0.1:6379> 
    

     TTL 命令和PTTL 命令接受一个带有生存时间或者过期时间的键,返回这个键的剩余生存时间,也就是,返回距离这个键被服务器自动删除还有多长时间:

    127.0.0.1:6379> time
    1) "1545470973"
    2) "878082"
    127.0.0.1:6379> set key1 'value1'
    OK
    127.0.0.1:6379> expireat key1 1545471973
    (integer) 1
    127.0.0.1:6379> ttl key1
    (integer) 962
    127.0.0.1:6379> ttl key1
    (integer) 961
    
    未经授权,不得转载!
  • 相关阅读:
    GP服务之IDW GIS空间插值密度分布图
    Cesium添加标注
    arcgis时间滑块time slider工具
    ArcObjects和ArcEngine的区别
    Android 多媒体 1.1 获取多媒体信息[原创]
    Android 获取root权限 实现重启
    Android GIF 编解码
    中国的程序员只能支撑到30岁么。
    Android通过摇晃手机的频率来控制声音的频率
    Android ListView 下拉刷新 上拉更多[实例]
  • 原文地址:https://www.cnblogs.com/bluetree2/p/11183906.html
Copyright © 2011-2022 走看看