redis基本操作

Posted AustinJoe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis基本操作相关的知识,希望对你有一定的参考价值。

redis简介

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

Redis特点:
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。

Redis应用场景:
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,
将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

如何安装和进入redis数据库(Linux系统)

安装

sudo apt-get update
sudo apt-get install redis-server


#Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
#默认使用 0 号数据库   默认开16个库
SELECT 1     # 使用 1 号数据库,Redis 现在的命令提示符多了个 [1]

进入

redis-cli   
redis-cli   --raw     #能显示中文

exit        #退出

redis五种数据类型及操作

  • string 字符串

  • list 列表

  • hash 哈希

  • set 集合

  • sorted sets 有序集合

string

string 类型是 redis 最基本的类型, string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据。

  • set key value

    • 设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。

    • set name ‘joe‘

  • get key

    • 返回key的值,若key不存在则返回nil

      mset key value [key value..]

    • 为多组key设置值,该操作为原子操作,要么一组都设置成功,要么一组都设置失败;

    • mset username ‘root‘ password ‘123‘ name ‘joe‘

  • mget key [key...]

    • 返回一个或多个key的值,若key不存在返回nil,若key存在但不是字符串返回nil

    • mget username, password, name       #有,号会被认为是key的一部分
      mget username password name
  • append key value

    • 将指定的值追加到key末尾,若key不存在,则创建并赋值,返回追加后的字符串长度

    • append name love

  • ttl key

    • 返回key的剩余生存时间, -1 表示永久存在, -2表示不存在

    ?

  • set key value ex seconds

    • 设置 key的同时,设置过期时间(单位:秒) key 过期后将不再可用,会被系统自动删除。

    • set age 18 ex 20    
      setex key seconds value 例: ( setex sex 20 ‘男‘ )
  • persist key

    • 移除指定key的生存时间,成功返回1,若key不存在或不存在生存时间时返回0;

全局key操作

  • rename key newkey 改名

    • 当key和newkey相同或者key不存在时返回一个错误,当newkey已存在时则会覆盖;

    • keys *                  # 查看所有的key
      ?
      del key # 删除 返回成功的个数
      ?
      exists key # 查看key是否存在 返回存在个个数
      ?
      type key # 查看key类型
      ?
      expire key seconds #设置过期时间
       
      persist key #移除过期时间

list

列表的元素类型为string,按照插入顺序排序在列表的头部或者尾部添加元素.
  • lpush key value[value...]

    • 在头部插入数据

    • lpush  key  value     #例  lpush my_list a b c d
    • 在尾部添加数据

    • rpush  key  value     #例  rpush my_rlist a b c d
  • lindex key index

    • 返回列表中元素的值。index从0开始,当index超出索引时返回null

    • lindex my_list 3    #查看第三个

    ?

  • lrange key start stop

    • 查看索引范围内元素的值

    • lrange my_list 0 -1     #查看所有值
  • llen key

    • 返回列表的长度

      llen my_list
  • lset key index newvalue

    • 指定索引号进行修改

    • lset my_list 0  hello

?

  • 删除

    • lpop key 删除左边第一个

    • rpop my_list

    • rpop key 删除右边第一个

    • rpop my_list

hash

是一个键值(key=>value)对集合。是string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象, field 域, value 值

设置/修改

  • hset key field value

    • 将field-value设置到hash表中,若key不存在会新建hash表再赋值,已存在则会覆盖;

    • hset user name xiaoming     #user { name:xiaoming}
  • hmset key field1 value1[field value...]

    • 同时设置多个

    • # user {name:xiaoming , age:18}
      hmset user name xiaoming age 18

查看

  • hget key field

    • 获取value

    • hget user name
  • hmget key field[field...]

    • 获取多个value

    • hmget user name age
  • hvals key

    • 获取全部value

  • hkeys key

    • 获取所有的field

  • hgetall key

    • 获取全部fieldvalue

  • hlen key

    • 查看有几个键值对

  • hexists key field

    • 判断hash表中指定域是否存在,返回1,若key或field不存在则返回0;

    • hexists user age

删除

  • hdel key field

    • hdel user name

set

元素为string类型,无序集合,元素具有唯一性,不重复 
  • sadd key member [member...] 增加元素

    • 将一个或多个member元素加入到集合key中,若member已存在那么会忽略此元素,

    • sadd my_set m n b v c x z b

  • scard key

    • 返回集合key中元素的个数;

  • smembers key

    • 获取集合中所有元素

  • sismember key member 判断集合存在某个值

    • 判断member在key中是否已存在, 返回0或1

    • sismember my_set b

  • 删除

    • srem key member [member...]

      • 移除一个或多个元素,不存在的member会被忽略,返回被移除元素个数

      • srem my_set a b n 
    • spop key 随机删除

      • 移除并返回集合中的一个随机元素,当key不存在时返回NULL

zset

类似于Set,不同的是Sorted中的每个成员都分配了一个分数(Score)用于对其中的成员进行排序(升序)。
zset的成员是唯一的,但分数(score)却可以重复。

添加/修改

  • zadd key score member[ [score member] ..]

    • 设置, 存在就更新

    • zadd  my_zset 1 ‘one‘
      zadd  my_zset 2 ‘tow‘
      ?
      zadd  my_zset 10 a 20 b 30 c 40 d 50 a

查看

  • zscore key member

    • 查看score值

      zscore my_zset a

  • zrange key start stop[withscores]

    • 按索引返回key的成员, withscores表示显示score

    • zrange my_zset 0 -1   #显示全部
  • zrangebyscore key min max

    • 返回集合中 score 在给定区间的元素

    • zrangebyscore zset 10 30

删除

  • zrem key member [member...]

    • 移除有序集合中的一个或多个元素,若member不存在则忽略;

    • zrem my_zset two 

    ?

  • zremrangebyrank min max :

    • 删除集合中索引在给定区间的元素

    zremrangebyrank my_zset 1 3
  • zremrangebyscore min max :

    • 删除集合中 score 在给定区间的元素

    zremrangebyscore my_zset 10 30
     

























以上是关于redis基本操作的主要内容,如果未能解决你的问题,请参考以下文章

如何利用redis来进行分布式集群系统的限流设计

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode 如何操作用户自定义代码片段(快捷键)

c_cpp Robolution基本代码片段