- Redis 是一个高性能的key-value数据库,属于NoSQL
- NoSQL:not only sql
- 泛指非关系型的数据库
- 不支持SQL语法
- nosql中存储的数据都是KV形式
- 每种nosql数据库都有自己的api和语法,以及擅长的业务场景
- NoSQL有:Mongodb,Redis,Hbase hadoop等
- 和SQL数据库相比:
- sql数据库适合用于关系特别复杂的数据查询场景,nosql反之
- sql对事务的支持非常完善,而nosql基本不支持事务
- NoSQL:not only sql
- 服务器端命令
- 服务器端的命令为redis-server
- 查看帮助⽂档redis-server --help
- 指定加载的配置文件sudo redis-server /etc/redis/redis.conf
- 客户端命令
- 客户端的命令为redis-cli
- 查看帮助⽂档redis-cli --help
- 连接redis redis-cli
- 切换数据库 select 2 数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库
- 数据结构
- redis是key-value的数据结构,每条数据都是⼀个键值对
- 键的类型是字符串
- 值的类型分为五种:
- 字符串string
- 哈希hash
- 列表list
- 集合set
- 有序集合zset
- string
- 增:
- 设置键值:set key value 如 set name Liming
- 设置键值及过期时间(以秒为单位)setex key seconds value 如setex name1 10 Zhangsan 设置键为name1值为Zhangsan的数据,10秒过期
- 设置多个键值 mset key1 value1 key2 value2 ... 如 mset name1 Z1 name2 Z2 name3 Z3
- 追加值 append key value 如 append name1 isz1 追加后为Z1isz1
- 查
- 根据键取值 get key 如 get name1
- 获取多个键的值 mget key1 key2 ... 如mget name1 name2 name3
- 查找键
- 查找所有键 keys * 支持正则
- 判断键是否存在 exists key 如 exists name 如果存在返回1,不存在返回0
- 查看键对应的value的类型 type key 如 type name
- 删除键及对应的值 del key1 key2 ... 如 del name1 name2
- 设置过期时间 expire key seconds 如 expire name3 10 设置name3过期时间为10s
- 查看有效时间 ttl key 如 ttl name
- 改:直接set key value
- 增:
- hash
- 增:
- 设置单个属性 hset key field value 如 hset user name Z1 意思设置键为user的属性name的值为Z1
- 设置多个属性 hmset key field1 value1 field2 value2 ... 如 hmset user1 name Z2 age 19 为设置键为user1的name属性为Z2,age属性为19
- 查:
- 获取指定键所有的属性 hkeys key 如 hkeys user 注意是获取属性不是属性的值 这里得到name和age两个结果
- 获取⼀个属性的值 hget key field 如 hget user name
- 获取多个属性的值 hmget key field1 field2 ... 如 hmget user name age
- 获取所有属性的值 hvals key 如 hvals user
- 删
- 删除整个hash键及值,使⽤del命令 如 del user
- 删除属性,属性对应的值会被⼀起删除 hdel key field1 field2 ... 如 hdel user1 name
- 增:
- list
- 增
- 在左侧插⼊数据 lpush key value1 value2 ... 如lpush user1 19 Z1 即最新插入的数据在最前面,这里插入时Z1在19的前面
- 在右侧插⼊数据 rpush key value1 value2 ... 和上面一样,此时会按插入先后顺序排序
- 在指定元素的前或后插⼊新元素 linsert key before或after 现有元素 新元素 如linsert user1 befor 19 Bnew 此时Bnew插入到19前面
- 查
- 查询列表⾥指定范围内的元素 lrange key start stop 如lrange user1 0 1
- 改
- 设置指定索引位置的元素值 lset key index value 如 lset user1 1 New
- 删
- 删除指定元素 lrem key count value 将列表中前count次出现的值为value的元素移除 如 lrem user2 2 a
- count > 0: 从头往尾移除
- count < 0: 从尾往头移除
- count = 0: 移除所有
- 删除指定元素 lrem key count value 将列表中前count次出现的值为value的元素移除 如 lrem user2 2 a
- set
- 特点
- ⽆序
- 元素为string类型
- 元素具有唯⼀性
- 无修改操作
- 增
- sadd key member1 member2 ... 如 sadd name Z1 Z2 Z3 向键为name的集合中添加元素 Z1Z2Z3
- 查
- 返回所有的元素 smembers key 如smembers name
- 删
- 删除指定元素 srem key member 如 srem name Z1
- 特点
- 增
- zset
- 特点
- 有序集合
- 元素为string类型
- 元素具有唯⼀性
- 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
- 没有修改操作
- 增
- zadd key score1 member1 score2 member2 ... 如 zadd name1 1 Z1 2 Z2 4 Z3 3 Z4 结果排序为Z1 Z2 Z4 Z3
- 查
- zrange key start stop 如 zrange name1 0 -1
- 返回score值在min和max之间的成员 zrangebyscore key min max 这里包括min和max
- 返回成员member的score值 zscore key member 如 zscore name1 Z1
- 删
- 删除指定元素 zrem key member1 member2 ... 如 zrem name1 Z1
- 删除权重在指定范围的元素 zremrangebyscore key min max
- 特点
与python交互
- 安装redis pip install redis
- 导入 from redis import StrictRedisfrom redis import StrictRedis def redis_sr(): sr = StrictRedis(decode_responses=True) print(sr.keys()) print(sr.type('user')) print(sr.hget(key='class',name='user')) if __name__ == "__main__": redis_sr()
转载于:https://www.cnblogs.com/being-a-tester/p/10447153.html