【自撰】Redis数据库(数据类型和常用命令)

数据类型介绍
  • Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

  • 数据是以键值对的形式存储的,也就是一个key对应一个value。

    注意:上面说的五种数据类型指的是value的类型,而不是key的类型。

String(字符串)
  • string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

  • string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。而且不会有乱码。

Hash(哈希)
  • Redis hash 是一个键值(key=>value)对集合,类似java里面的Map。

  • Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

    注意:指的是在Redis中存储的键值(key、value)对中的value的类型是Hash类型。Redis中存储数据本就是键值对,而这个值又可以为Hash类型,也就是Map。

List(列表)
  • Redis 列表是简单的字符串列表,按照插入顺序排序。
  • 可以添加一个元素到列表的头部(左边)或者尾部(右边)。
  • 它底层实际是一个链表,类似于java里面的LinkedList。
Set(集合)
  • Redis的Set是string类型的无序集合,集合中不能出现重复的数据。
  • 它是通过哈希表实现的。
zset(sorted set:有序集合)
  • Redis zset 和 set 一样也是string类型元素的集合, 且不允许重复的成员。
  • 不同的是每个元素都会关联一个double类型的分数。
  • redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的, 但分数(score)却可以重复。
redis常用命令
  • keys * 查询所有的key
  • exists key的名字,判断某个key是否存在,存在返回1,不存在返回0
  • expire key 秒钟:为指定的key设置过期时间,没设置就表示永不过期
  • ttl key 查看还有多少秒过期,-1 表示永不过期,-2表示已过期
  • persist key 持久化某个key,让这个key永不过期
  • type key 查看你的key对应的值是什么类型
  • del key [key …]删除指定的key(指定多个key时,用空格隔开)
  • move key db 将key移动到指定的库,默认是放在0号库。(Redis默认支持16个数据库,0~15)
  • select num 切换指定的的redis数据库
  • flushdb 或 flushall 清空redis数据库(仅练习时使用,工作后慎用)
    • flushdb 清空当前数据库中的key
    • flushall 清空所有数据库中的key
  • rename key newkey 重命名key,如果新的名称存在时则覆盖
  • renamenx key newkey 重命名key,新名称不存在时才能命名成功,否则什么也不做
Redis字符串String的常用命令
命令描述例子
Set设置/更新 key 的值set key value
Set … ex …设置/更新 key 的值,并设置有效时间set key value ex seconds
Get获取 key 的值get key
append追加字符串append key value
decr减少值(只能是对整型操作)decr key
incr增加值incr key
decrby根据步长减少值decr key step
incrby根据步长增加值incr key step

增加:increment 减少:decrement

命令描述例子
getset先获取值再赋值getset key value
strlen返回key对应value的长度strlen key
setex设置值及有效存储时间setex key seconds value
setnxkey不存在时设置值;存在则不设置setnx key value
setrange替换指定索引开始的字符串setrange key start value
getrange获取指定位置的字符串(含头尾)getrange key start end
命令描述例子
mget返回多个key的值mget key [key…]
mset设置多个key、valuemset key value [key value …]
msetnxkey不存在设置(只要有一个存在,则全部设置不成功)msetnx key value [key value…]

Redis列表List的常用命令

命令描述例子
lpush从左往右向list中添加元素lpush key value [value…]
rpush从右往左向list中添加元素rpush key value [value …]
lrange遍历list中指定位置的数据lrange key start stop
lpushxkey存在则追加元素,不存在则不操作lpushx key value
rpushxkey存在则追加元素,不存在则不操作rpushx key value
lpop弹出最左边(头部)的元素lpop key
rpop弹出最右边(尾部)的元素rpop key
llen返回key对应列表中元素的个数llen key

注意:当集合中所有元素都弹完后,key会被释放掉。

命令描述例子
lrem从左往右删除指定key中count个值为value的元素。如果count>0,从左往右删;如果count<0,从右往左删;如果等于0,则删除所有值为value的元素。lrem key count value
lset将指定索引位置元素设置成valuelset key index value
lindex获取指定索引位置的元素lindex key index
ltrim去除指定索引位置两边的元素ltrim key start end
linsert在某个值的前面或后面插入新的值(如果有多个值,只会在第一个值前/后插入)linsert key before|after pivot value
rpoplpush从一个集合的尾部弹出一个值,插入到另一个集合的头部rpoplpush source destination
  • 注意:可以用rpoplpush实现任务队列,构建循环队列。
    rpoplpush sourceKey destinationKey,如果sourceKey 和 destinationKey 相同,则可以构成循环队列。
Redis哈希Hash的常用命令
命令描述例子
hset给key中的field字段赋值,返回键值对数量hset key field value [field value …]
hget获取key中field字段的值hget key field
hmset给key中的field字段赋值, 返回OKhmset key field value [field value …]
hmget获取key中多个field字段的值hmget key field [field …]
hdel删除field字段hdel key field [field …]
hexists判断field是否存在hexists key field
hgetall获取key中所有的键值hgetall key
hincrby给field按步长增加值(只能是整型)hincrby key field inrement
hlen获取key对应的容器中元素的个数hlen key
hsetnxfield不存在则赋值,存在则不做修改hsetnx key field value
hkeys获取key中所有的fieldhkeys key
hvals获取key中所有的valuehvals key
集合Set的常用命令
命令描述例子
sadd向set集合中添加元素sadd key member [member …]
smembers遍历集合中所有元素smembers key
scard获取set集合中的成员数量scard key
sismember判断某元素是否存在sismember key member
srem删除指定的成员(元素)srem key member [member …]
spop随机弹出一个元素spop key

**注意:**不管是list、hash、set、zset,只要容器中没有元素了,redis就会将这块空间回收,所以key自然也就不存在了。

命令描述例子
srandmember随机返回一个或多个成员,不删除原值srandmember key [count]
smove将一个集合中的成员移到另一个集合中smove source destinaion member
sdiff求多个集合的差集,不会改变原集合中的数据sdiff key [key …]
sdiffstore将差集结果存到新集合中sdiffstore destination key [key …]
sinter求多个集合的交集sinter key [key …]
sinterstore将交集结果存到新集合中sinterstore destination key [key …]
sunion求多个集合的并集sunion key [key …]
sunionstore将并集结果存到新集合中sunionstore destination key [key …]
集合ZSet(sortedset)的常用命令
命令描述例子
zadd添加排序成员zadd key score member [score member …]
zcard获取成员数量zcard key
zcount获取分数在min和max之间的成员个数zcount key min max
zrange根据索引遍历成员及分数zrange key start stop [withscores]
zrevrange遍历成员及分数 (按分数从大到小的顺序)zrevrange key start stop [withscores]
zincrby增加指定成员的分数zincrby key inrement member
zrangbyscore获取分数在min和max之间的成员和分数zrangbyscore key min max [withscores] [limit offset count]
zrevrangbyscore获取分数在min和max之间的成员和分数(按分数从大到小的顺序)zrevrangbyscore key max min [withscores] [limit offset count]
命令描述例子
zrank返回成员下标zrank key member
zrevrank返回成员下标(按分数从大到小的顺序)zrevrank key member
zscore获取指定成员的分数zscore key member
zrem删除指定成员zrem key member [member…]
zremrangebyrank删除下标之间的数据zremrangebyrank key start stop
zremrangebyscore删除分数在min和max之间的成员zremrangebyscore key start stop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值