五种数据类型与python操作
string类型及操作
键值对:name = zhangsan,password=1234,age=18
set append 建删改
- set name zhangsan # 查看:get name
- setnx name zhangsan # not exist如果不存在name这个key才添加
- setex name 10 zhangsan # 10秒过期
- setrange name 5 li # 从索引号5开始用li代替,zhangsi
- mset name zhangsan password 1234 #设置多个kv
- msetnx name zhangsan password 1234 #如果不存在才添加多个kv
- append name feng # zhangsanfeng ,添加在v值后面
- del name # 删除name
get strlen 获取kv
- get name
- getset name zhangsan_new # 先获取再修改kv,如果key不存在返回0
- getrange
- getrange name 0 6# 获取key的0-6索引值部分的内容
- getrange name -5 -1 # 获取key的-5~-1的索引值部分的内容,即倒数5个字符 即:n_new
- mget name password sex # 返回key对应的value,无该key返回nil
- keys * #返回所有 name
- strlen name # 返回value值的长度
加减数值
- incr age # age+1
- incrby age 18 # age+18
- incrbyfloat age 18.5 # age+18.5
- incrbyfloat age -18.5 # age-18.5
- decr age #age -1
- decrby age 18 #相当于incrby age -18
hash类型及操作
Redis hash 是一个string 类型的field 和value 的映射表.hash 特别适合用于存储对象。相较于将对象的每个字段存成单个string 类型,将一个对象存储在hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。hash表是key- field-value结构:人是key,name是field,value是郭靖,age是field,value是18
例如: 某个人,name=郭靖,age=20,sex=1,love=huangrong
hset hsetnx hmset hdel设置hash
- hset beixia name guojing age 20 # key是beixia,field是name和age,value分别是guojing和18
- hsetnx beixia name guojing2 # 设置key-field和value,如果已有则返回0
- hmsex beixia name guojing age 20 # 设置多个field,与hset相同
- hdel beixia name # 删除name
hget hmget 获取value
- hget beixia name
- hmget beixia name age love
- hkeys beixia #返回beixia所有field
- hvals beixia # 返回beixia所有value
- =hgetall beixia= #返回最全beixia的所有field和value
hincrby 增减值
- hincrby beixia age 1 # age+1
- hincrby beixia age -1 # age-1
- hincrbyfloat beixia age 0.5 # age+0.5
- hincrbyfloat beixia age -0.5 # age-0.5
- hexists beixia son # 不存在son这个field,返回0
- hlen beixia #返回field的数量
list类型及操作
list 是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理
解为链表的名字
Redis 的list 类型其实就是一个每个子元素都是string 类型的双向链表。链表的最大长度是(2
的32 次方)。我们可以通过push,pop 操作从链表的头部或者尾部添加删除元素。这使得list
既可以用作栈,也可以用作队列。
key(列表名 ):shediao
value :ouyangfeng guojing huangyaoshi yideng zhoubotong hongqigong
插入 lpush rpush linsert 改lset 删 lrem
- lpush shediao ouyangfeng hongqigong # 在列表开头插入value ouyangfeng和hongqigong
- lrange shediao 0 -1 # =查找列表所有value= -1表示最后一位
- rpush shediao wangchongyang #在列表结尾插入一个value wangchongyang
- linsert shediao after wangchongyang zhoubotong #在列表的wangchongyang后插入zhoubotong
- lset shediao 0 huangrong # 将列表的索引值为0的value改成huangrong
- lrem shediao 2 zhubotong #将列表的索引值为zhubotong的删除掉最多两个,从左向右删
- lrem shediao -2 zhubotong #将列表的索引值为zhubotong的删除掉最多两个,从右向左删/
- lrem shediao 0 zhubotong #将列表的索引值为zhubotong的全部删除
- ltrim shediao 1 2 # 删除不在索引号1~2的其他value
- lpop shediao # 删除list头部第一个value
- rpop shediao # 删除list头部最后一个value
- rpoplpush shediao shendiao #将shediao最后一个Value删除并移入shendiao第一个,返回被删除的元素
lindex lrange
- lindex shediao 4 # 返回索引值4的value
- lrange shediao 0 -1 #返回所有value
- llen shediao # 返回shediao的value个数
set类型及操作
set 是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合
求交并差等操作,=操作中key 理解为集合的名字=。
Redis 的set 是string 类型的无序集合。set 元素最大可以包含(2 的32 次方)个元素。
key=yitian (倚天) value jueyuan zhangsanfeng zhangcuishan zhangwuji
key =shendiao(神雕) value jueyuan(觉远)
增sadd
- sadd yitian jueyuan zhangsanfeng zhangcuishan zhangwuji #在倚天中增加4个value
- srem yitian zhangcuisan #删除zhangcuishan
- spop yitan # 随机返回一个值并删除
- sdiff yitian shendiao # yitian -shendiao
- sdiff shendiao yitian # shendiao -yitian
- sdiffstore newset shendiao yitian # 计算shendiao-yitian的结果并放在newset中
- sinter shendiao yitian #计算shendiao*yitian
- sinterstore newset shendiao yitian #计算shendiao*yitian的结果并放在newset中
- sunion shendiao yitian #计算shendiao+yitian
- sunionstore newset shendiao yitian #计算shendiao+yitian的结果并放在newset中
- smove yitian shendiao jueyuan # 从yitian中移动jueyuan到shendiao
smembers 列出所有元素
- smembers shendiao
- scard shendiao #返回 shendiao的元素个数
- sismember shendiao jueyuan #如果jueyuan是元素,返回1,否则返回0
- srandmember shendiao 2 #随机返回2个元素
sorted set 类型与操作(zset)
sorted set 是set 的一个升级版本,它在set 的基础上增加了一个顺序属性,这一属性在添加
修改元素的时候可以指定,每次指定后,zset 会自动重新按新的值调整顺序。可以理解为有
两列的mysql 表,一列存value,一列存顺序。操作中key 理解为zset 的名字。
和set 一样sorted set 也是string 类型元素的集合,不同的是每个元素都会关联一个double
类型的score。sorted set 的实现是skip list 和hash table 的混合体。
key:ludingji 鹿鼎记
sort value:1 shuanger,2 jianning 3 mujianping
增删改
- zadd ludingji 1 shuanger 2 jianning 3 mujianping
- zadd ludingji 1 shuanger 2 shuanger # 多次设置的元素以最后一次为准 shuanger 2
- zrem ludingji 1 shuanger # 删除shuanger
- zremrangebyrank ludingji 0 1 #按rank由小到大排列,删除0-1的元素
- zremrangebyscore ludingji 0 1 # 按score由小到大排列,删除0-1的元素
- zincrby ludingji 1 jianning # jiangning的序号+1
查
zrange ludingji 0 -1 withscores #升序输出 shuanger 1 jianning 2 mujianping 3 (withscores会列出序号)
zrevrange ludingji 0 -1 withscores # 降序输出
zrangebyscores ludingji 0 1 # 按score范围输出元素
zrank ludingji shuanger # 返回shuanger的下标
zcount ludingji 0 2 #返回区间的元素数量
zcard ludingji # 返回元素数量
zscore ludingji shuanger #返回元素的score
通用命令
- keys * # 查看所有key
- exists shendiao # key是否存在
- del shendioa #删除key
- expire shendiao 10 # 设置shendiao10秒过期
- move shendiao 1 # 把shendiao key移动到数据库1
- select 1 # 选择数据库1
- persist shendiao # 把shendiao key的过期时间设为永久
- randomkey # 随机返回一个key
- rename shendiao shendiao2 # 改名key
- type key #key类型
服务器相关命令
- ping
- echo hello # 打印内容
- select 1 #数据库1
- quit #退出连接
- dbsize #当前数据库的key数量
- info # 服务器信息统计
- config get * #获取服务器配置信息
- flushall #删除所有数据库的所有key
- flushdb #删除当前数据库的所有key
- auth 1234 #用口令1234登录-
- config set requirepass 1234 #设置密码为1234
py-redis
使用python操作redis
- 安装 pip install redis
- 使用
import redis #导入
r = redis.StrictRedis(host='120.24.*.*', port=6379, db=0, password='*') #返回byte类型
r = redis.StrictRedis(host='120.24.*', port=6379, db=0, password='*',decode_responses="True") #返回文本
r.set('name-redis', 'hongbagong',ex=5) # 使用redis对应的命令管理key
print(r.get('name-redis')) #获取keuy