Redis教程

redis基本使用教程

本文主要是介绍redis基本使用教程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

redis基本技术总结

1 redis 简介

基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库

redis是一个高性能的key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)

存储值类型:

  • string
  • list
  • set
  • zset
  • hash

1.1 nosql 与 sql 区别

1.1.1 存储方式

  • sql: 数据存储在表结构中,需要先定义表和字段结构才能存储数据。

  • nosql:存储的数据格式可以是json、hash等键值对, 不需要定义表,随时可以存储

1.1.2 join查询

  • sql: 支持join操作、使用一条SQL语句可以关联多张表将数据查询出来

  • nosql:不支持SQL语句,更不支持join操作

1.1.3 数据耦合性

  • sql: SQL 中不允许删除已经被使用的外部数据以保证数据完整性,数据耦合性高

  • nosql:没有强耦合的概念,数据可以随时删除

1.1.4 事务

  • sql: SQL具有事务的概念,如果对多张表数据进行更新操作,要么都成功,要么回退数据不更改。

  • nosql:nosql没有事务概念,数据的操作都是原子级的

1.1.5 查询性能

在相同水平的系统设计的前提下, 因为 NoSQL 中省略了 JOIN 查询的消耗, 故理论上性能上是优于 SQL 的

1.2 Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

2 redis 基本操作

2.1 string (重点)

2.1.1 添加修改数据

# 添加一个值
set key value
# 添加多个
mset key1 value1 key2 value2

2.1.2 获取数据

# 获取一个
get key
# 获取多个值
mget key1 key2

2.1.3 删除

# 删除值
del key

2.1.4 获取字符串的长度

strlen key

2.1.5 追加信息到原字符串之后

append key value

2.1.6 incr , incrby和 incrbyfloat

# 数值 + 1, 每次只增加1
incr key
# 指定 数值增加10, 只能增加整数值
incrby key 10
# 指定数值增加10.5, 可以增加整数或小数
incrbyfloat key 10.5

2.1.7 decr , decrby

# 数值 - 1, 每次只能减1
decr key
# 指定 数值减去10, 只能减整数值
decrby key 10

2.1.8 设置数据有效期

为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值

# 格式: setex key seconds value
# 设置 code=3920且有效期等于60s的数据
setex code 60 3920
# 查看有效时期
ttl code

image

2.1.9 查看字段

keys *

2.2 哈希(Hash)

hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)

2.2.1 hset 和 hset

  • 增加修改数据

    格式: hset key field value

    格式: hmset key field value

    # 添加一个hash数据
    hset user name "张三"
    # 会覆盖name字段值
    hmset user name "lisi" name "wangwu"
    # 添加多了字段
    hset user age 20 hight 175
    

2.2.2 hget和hmget

  • 查看字段

    格式: hget key field

    格式: hmget key field

    # 查看一个字段值
    hget user name
    # 查看多个字段值
    hmget user name age hight
    

2.2.3 hlen和hexists

  • 查看hash表中字段的数量

    格式: hlen key

    hlen user
    
  • hash表中是否存在指定的字段

    格式: hexists key field

    hexists user gender
    

image

2.2.4 hkeys和hvals

  • 查看hash表中的字段和值

    格式: hkeys key

    格式:hvals key

    # 查看hash表中的所有字段
    hkeys user
    # 查看hash表中的所有值
    hvals user
    

    image

    格式: hgetall key

    hgetall user
    

    image

2.2.5 hincrby和 hincrbyfloat

格式:hincrby key field incrment

格式:hincrbyfloat key field incrment

# 指定 数值增加10, 只能增加整数值
hincrby user age 1
# 指定数值增加10.5, 可以增加整数或小数
hincrbyfloat user age 1.5

image

2.2.6 hsetnx 命令

hsetnx 命令用于为哈希表中不存在的的字段赋值

# 格式: hsetnx key field value
hsetnx user gender nan

image

2.3 列表(list)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

2.3.1 添加数据

格式:

lpush key vuale1 value2 或 rpush key vuale1 value2

# 从左边添加一个或多个数据
lpush list1 1 2 3 4 5 6
# 从尾部添加一个或多个数据
rpush list2 1 2 3 4 5 6

image

2.3.2 查看数据

格式: lrange key start stop

格式: lindex key index

格式: llen key

# 通过索引范围查看数据
lrange list2 0 -1
# 查看指定索引位置的数据
lindex list2 0
# 查看list 的长度
llen list2

image

2.3.3 获取并删除数据

格式: lpop key 或 rpop key

image

2.3.4 规定时内获取并删除数据

格式: blpop key 或 brpop key

image

2.3.5 lrem 删除命令

格式: lrem key count value

count 的值可以是以下几种:

  • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 count 。
  • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 count 的绝对值。
  • count = 0 : 移除表中所有与 VALUE 相等的值。

2.4 集合(set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表实现的。

  • 添加数据

    格式: sadd key member [member ...]

    # 添加集合成员
    sadd city beijing shanghai xian tianjin wuhan zhengzhou
    

    image

  • 获取数据

    格式: smembers key

  • 删除成员

    格式: srem key member [member ...]

    srem city beijing
    

    image

  • 查看集合成员数量

    格式: scard key

    scard city
    
  • 判断是否是集合中的成员

    格式: sismember key member

    sismember city beijing
    

    image

  • 随机获取指定数量的成员数据

    格式: srandmember key count

    # 随机获取2个成员数据
    srandmember city 2
    

    image

  • 随机获取集合中的成员数据并删除该数据

    格式: spop key

    spop city
    

    image

  • 交集,并集,差集

    格式: sinter key1 [key2] 交集

    格式: sunion key1 [key2] 并集

    格式:sdiff key1 [key2] 差集

    image

  • 将两个交集,并集,差集的结果集存储到指定集合中

    格式: sinterstore destination key1 [key2] 交集

    格式: sunionstore destination key1 [key2] 并集

    格式:sdiffstore destination key1 [key2] 差集

    image

  • 将指定元素从原集合移动到目标集合中

    格式: smove source destination member

    # 将集合成员1从集合set5中移动到集合set6中
    smove set5 set6 1
    

    image

2.5 有序集合(sorted set)

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复

  • 添加数据

    格式: zadd key score1 member1 [score2 member2 ...]

    # 添加数据
    zadd zset1 10 ls
    # 添加多个数据
    zadd zset1 10 ww 30 zs 25 zl
    

    image

  • 获取有序集合中的数据

    格式: zrange key start stop [withscores]zrevrange key start stop [withscores]

    zrange 和 zrevrange 互为逆序

    zrange zset1 0 -1 withscores
    zrevrange zset1 0 -1 withscores
    

    image

  • 删除数据

    格式: zrem key member [member]

    image

  • 按条件查询

    格式: zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

    格式: zrevrangebyscore key min max [WITHSCORES] [LIMIT offset count]

    备注: min和max 查询条件范围,指向的是有序集合排序的数值

  • 按条件删除

    格式: zremrangebyrank key start stop

    格式: zremrangebyscore key min max

    备注: min和max 查询条件范围,指向的是有序集合排序的数值;start 和 stop作用于索引

  • 获取有序集合中的数量

    格式: zcard key

    格式: zcount key min max

    image

  • 有序集合的交集和并集

    格式: zinterstore destination numkeys key [key ...]

    格式: zunionstore destination numkeys key [key ...]

    备注: 类似无序集合的操作, numkeys 含义是表示后面有几个集合进行操作

  • 获取数据对应的索引

    格式: zrank key member

    格式: zrevrank key member

  • score值的获取与修改

    格式: zscore key member

    格式: zincrby key increment member

3 redis key基本指令

3.1 删除key

del key

3.2 判断key是否存在

exists key 

3.2 获取key所储存的值的类型

type key

3.3 设置key的有效期

# 设置过期时间,以秒计
expire key seconds
# 设置过期时间,以毫秒计
pexpire key milliseconds
# 设置过期时间的时间戳,以秒计
expireat key timestamp
# 设置过期时间的时间戳,以毫秒计
pexpireat key milli-timestamp
# 移除 key 的过期时间,key 将持久保持
persist key

3.4 查看剩余的过期时间

  • ttl key : 以秒为单位,返回给定 key 的剩余生存时间

  • pttl key: 以毫秒为单位,返回给定 key 的剩余生存时间

3.5 查找所有符合给定模式( pattern)的 key

  • keys pattern

    • 匹配规则:
      • * 匹配0或多个任意字符
      • ? 匹配一个任意字符
      • [] 匹配一个指定的字符

    image

3.6 修改key的名称

# 修改key的名称,新的名称存在,则值就会被覆盖
rename key newkey
# 修改key的名称,仅当 newkey 不存在时,将 key 改名为 newkey
renamenx key newkey

3.7 切换数据库

select index

3.8 数据移动

# 将数据移动到其他库中
move key db

3.9 数据清理

  • 查看数据量: dbsize
  • 清理当前数据库数据: flushdb
  • 清理所有数据: flushall
这篇关于redis基本使用教程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!