redis学习-p02-常用数据类型操作

  1. redis 基本操作
  2. Redis 键(KEY)的操作
  3. Redis字符串(String)
  4. Redis列表(List)
  5. Redis 集合(Set)
  6. Redis 哈希(Hash)
  7. Redis 有序集合 Zset
  8. python操作redis

redis 基本操作

redis 默认端口 6379,默认有16个数据库,数据库名称类似数组下标,从0开始,初始默认使用0号库

select <dbid>:切换数据库

root@3b86bce8591a:/data# redis-cli
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> select 15
OK

常用命令

语法 描述
select <dbid> 切换数据库
dbsize 查看当前数据库的key的数量
flushdb 清空当前库
flushall 清空全部库

Redis 键(KEY)的操作

常用命令

语法 描述
key * 查看当前库所有key(匹配: keys *key*)
exists <key> 判断某个key是否存在
type <key> 查看key是什么类型
del <key> 删除指定的key数据
expire <key> <seconds> 为给定的key设置过期时间(key 必须已存在)
ttl <key> 查看给定个的key还有多少秒过期,-1 表示永不过期,-2表示已过期

Redis字符串(String)

String类型是二进制安全的,意味着Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。

Redis中一个中字符串value最多可以是512M

常用命令

语法 描述
set <key> <value> 添加键值对
get <key> 查询对应键值
append <key> <value> 将给定的value 追加到原值的末尾
strlen <key> 获得给定键的值长度
setnx <key> <value> 只有在key不存在时,设置key的值
incr <key> 将key中存储的数字值增1
decr <key> 将key中存储的数字值减1
incrby <key> <num> 将key中存储的数字值增num
decrby <key> <num> 将key中存储的数字值减num
mset <key1> <value1> <key2> <value2> … 同时设置一个或多个key-value对
mget <key1> <key2> … 同时获取一个或多个value
msetnx <key1> <value1> <key2> <value2> … 同时设置一个或多个key-value对,当且仅当给定key都不存在时,设置成功,原子性,有一个失败则都失败
setex <key> <过期时间> <value> 设置键值的同时,设置过期时间,同 set <key> <value> EX <过期时间>
getset <key> <value> 以新换旧,设置了新值同时获得旧值。

Redis列表(List)

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

常用命令

语法 描述
lpush <key> <value1> <value2> … 往左边插入一个或多个值
rpush <key> <value1> <value2> … 往右边插入一个或多个值
lpop <key> 从左边吐出一个值
rpop <key> 从右边吐出一个值
rpoplpush <key1> <key2> 从<key1>列表右边吐出一个值,插入到<key2>列表左边
lrange <key> <start> <stop> 按照索引下标获得元素, lrange <key> 0 -1 表示获取所有
lindex <key> <index> 按照索引下标获得元素(从左到右)
llen <key> 获得列表长度
linsert <key> before <value> <newvalue> 在<value>的前面插入<newvalue>
lrem <key> <n> <value> 从左到右,删除前n个value值
lset <key> <index> <value> 将列表<key>下标为<index>的值替换成<value>

Redis 集合(Set)

Redis Set 类似于list,是一个列表,特殊之处在于set是自动排重的。

常用命令

语法 描述
sadd <key> <value1> <value2> … 将一个或多个member元素加入到集合中,已经存在的member元素将被忽略
smembers <key> 取出集合的所有值
sismember <key> <value> 判断集合中是否含有该<value>值,有1,没有0
scard <key> 返回该集合的元素个数
srem <key> <value1> <value2>… 删除集合中的某个元素
spop <key> 随机从集合中吐出一个值
srandmember <key> <n> 随机从集合中取出n个值,不会从集合中删除
smove <source> <destination> value 把集合中的一个值移动到另外一个集合
sinter <key1> <key2> 返回两个集合的交集元素
sunion <key1> <key2> 返回两个集合的并集元素
sdiff <key1> <key2> 返回两个集合的差集元素

Redis 哈希(Hash)

Redis Hash 是一个 string 类型的 fieldvalue 的映射表。特别适合用于存储对象

Hash 存储

通过 Key(用户ID) + field(属性标签) 就可以操作对应属性数据。

常用命令

语法 描述
hset <key> <field> <value> 给<key>集合中的<field>键赋值<value>
如:hset user:001 name Milton age 18 gender 1
hget <key> <field> 从<key>集合中取出属性标签为<field> 的值
如:hget user:001 name
hmset <key> <field1> <value1> <field2> <value2> … 批量设置hash的值
hexists <key> <field> 查看<key>集合中的<field>键是否存在
hkeys <key> 列出<key>集合中的<field>键
hvals <key> 列出<key>集合中的所有values
hincreby <key> <field> <number> 为<key>集合中的<field>键的值加上增量number
hsetnx <key> <field> <value> 将<key>集合中的<field>键的值设置为value

Redis 有序集合 Zset

Redis 有序集合zset 与普通集合set非常相似,是一个没有重复元素的字符串集合

不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。

常用命令

语法 描述
zadd <key> <score1> <value1> <score2> <value2> … 将一个或多个member元素及其score值加入到有序集合中
zrange <key> <start> <stop> [withscores] 返回有序集合中,下标在<start><stop>之间的元素
zrangebyscore <key> <min_score> <max_score> [withscores] [limit offset count] 返回有序集合中,score值介于min_score和max_score之间的元素(从小到大排序)
zrevrangebyscore <key> <max_score> <min_score> [withscores] [limit offset count] 返回有序集合中,score值介于min_score和max_score之间的元素(从大到小排序)
zincrby <key> <increment_score> <value> 为元素的score加上增量
zren <key> <value> 删除该集合下指定值的元素
zcount <key> <min_score> <max_score> 统计该集合,分数区间内的元素个数
zrank <key> <value> 返回该值在集合中的排名

python操作redis


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code