Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。Redis hash 是一个键值(key=>value)对集合。Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。Redis的Set是string类型的无序集合。

Redis 字符串(String)

redis的操作可以用两种方式,第一种方式采用redis-cli,第二种方式采用编程语言,比如PythonPHPJAVA等。

  • 启动redis

sudo service redis-server start

  • 连接上redis-server:

redis-cli -h [ip] -p [端口]

  • 添加:
  set key value
  如:
  set username xiaotuo

将字符串值value关联到key。如果key已经持有其他值,set命令就覆写旧值,无视其类型。并且默认的过期时间是永久,即永远不会过期。

  • 删除:
  del key
  如:
  del username
  • 设置过期时间:

expire key timeout(单位为秒)

也可以在设置值的时候,一同指定过期时间:

  set key value EX timeout
  或:
  setex key timeout value
  • 查看过期时间:
  ttl key
  如:
  ttl username
  • 查看当前redis中的所有key

keys *

Redis 列表(List)

  • 在列表左边添加元素:

lpush key value

将值value插入到列表key的表头。如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时,将返回一个错误。

  • 在列表右边添加元素:

rpush key value

将值value插入到列表key的表尾。如果key不存在,一个空列表会被创建并执行RPUSH操作。当key存在但不是列表类型时,返回一个错误。

  • 查看列表中的元素:

lrange key start stop

返回列表key中指定区间内的元素,区间以偏移量startstop指定,如果要左边的第一个到最后的一个lrange key 0 -1

  • 移除列表中的元素:

移除并返回列表key的头元素:

lpop key

移除并返回列表的尾元素:

rpop key

移除并返回列表key的中间元素:

lrem key count value

将删除key这个列表中,count个值为value的元素。

  • 指定返回第几个元素:

lindex key index

将返回key这个列表中,索引为index的这个元素。

  • 获取列表中的元素个数:
  llen key
  如:
  llen languages
  • 删除指定的元素:
  lrem key count value
  如:
  lrem languages 0 php

根据参数 count 的值,移除列表中与参数 value 相等的元素。count的值可以是以下几种:

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

Redis 集合(Set)

  • 添加元素:
  sadd set value1 value2....
  如:
  sadd team xiaotuo datuo
  • 查看元素:
  smembeers set
  如:
  smembers team
  • 移除元素:
  srem set member...
  如:
  srem team xiaotuo datuo
  • 查看集合中的元素个数:
  scard set
  如:
  scard team1
  • 获取多个集合的交集:
  sinter set1 set2
  如:
  sinter team1 team2
  • 获取多个集合的并集:
  sunion set1 set2
  如:
  sunion team1 team2
  • 获取多个集合的差集:
sdiff set1 set2
如:
sdiff team1 team2

Redis 哈希(Hash)

  • 添加一个新值:
  hset key field value
  如:
  hset website baidu baidu.com

将哈希表key中的域field的值设为value。 如果key不存在,一个新的哈希表被创建并进行 HSET操作。如果域 field已经存在于哈希表中,旧值将被覆盖。

  • 添加多个新值:
  hmset key field value
  如:
  hmset website baidu baidu.com google google.com
  • 获取哈希中的field对应的值:
  hget key field
  如:
  hget website baidu
  • 获取哈希中的多个field对应的值:
    hmget key field, field2, field3 ...
    如:
    hmget website baidu google
  • 删除field中的某个field
  hdel key field
  如:
  hdel website baidu
  • 获取某个哈希中所有的fieldvalue
  hgetall key
  如:
  hgetall website
  • 获取某个哈希中所有的field
  hkeys key
  如:
  hkeys website
  • 获取某个哈希中所有的值:
hvals key
如:
hvals website
  • 判断哈希中是否存在某个field
hexists key field
如:
hexists website baidu
  • 获取哈希中总共的键值对:
hlen field
如:
hlen website

原创文章,转载请注明出处:https://leezc.cn/article/redis-operation/