redis type命令写入文件 redis写入数据_python

一:redis数据库:键是字符串类型,值有五种类型:字符串,哈希(hash),列表,集合,有序集合(zset)。
NoSQL:(not only sql)特点:
1:不支持sql语法。
2:存储数据都是key value 的格式。
3:每种nosql都有自己的api和语法,以及擅长的业务场景。
4:种类:Mongodb Redis

NoSQL与SQL的比较:
1:sql适合关系复杂的。
2:sql支持事务,nosql不支持事务。

Resid特性:c语言编写的,支持网络,基于内存,可以持久化的日志型,键值对数据库。
1:支持数据持久化:可以将内存中的数据保存到磁盘中,重启的时候可以再次加载使用。
2:不仅仅支持key—value ,还支持list set zset hash等数据结构的存储。
3:支持数据的备份。

Redis的优势:
1:性能极高。
2:支持的数据类型多
3:原子性

应用场景
1:用来做缓存,读取速度比传统的快。(用的最多的)
2:做数据库—社交类的应用。
3:大型系统中的特定功能—session共享,购物车。

二:string类型:与其他string类型不同,redis中的string可以保存二进制类型,也就是说string 可以保存任何类型。(图像,JSON),一个string 最大容量是512B。

string 类型保存

1:设置键和值
如果设置的键不存在则为添加,如果设置的键已经存在则修改
ubuntu@python:~$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name itcast
OK
127.0.0.1:6379> get name
"itcast"
127.0.0.1:6379> set name itheima
OK
127.0.0.1:6379> get name
"itheima"
127.0.0.1:6379>
2:设置键值和过期时间
案例:设置aa的值为bb,并且设置过期时间为3秒
127.0.0.1:6379> setex aa 3 bb
OK
127.0.0.1:6379> get aa
"bb"
127.0.0.1:6379> get aa
(nil)
3:设置多个键值:
例如:设置a1为python  a2为java  a3为c
ubuntu@python:~$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> mset a1 python a2 java a3 c
OK
127.0.0.1:6379> get a1
"python"
127.0.0.1:6379> get a2
"java"
127.0.0.1:6379> get a3
"c"
127.0.0.1:6379>
4:追加值
案例:gei a1 追加 haha
127.0.0.1:6379> append a1 haha
(integer) 10
127.0.0.1:6379> get a1
"pythonhaha"
127.0.0.1:6379>

string 类型 获取数据:

1:get方式获取值
127.0.0.1:6379> get a1
"pythonhaha"
2:mget 获取多个值
127.0.0.1:6379> mget a1 a2 a3
1) "pythonhaha"
2) "java"
3) "c"
127.0.0.1:6379>

三:键名令:
keys 正则表达式
1:列出数据库中所有的键:

127.0.0.1:6379> keys *
1) "a2"
2) "name"
3) "a3"
4) "a1"
127.0.0.1:6379>

2:查看以a开头的键:

127.0.0.1:6379> keys a*
1) "a2"
2) "a3"
3) "a1"
127.0.0.1:6379>

exists 键 :存在返回1 , 不存在返回0
1:判断a1是否存在:

127.0.0.1:6379> exists a1
(integer) 1
127.0.0.1:6379>

type 键 :查看value是啥类型
1:查看a1的值的类型:

127.0.0.1:6379> type a1
string

del 键 :删除键值对
1:删除 a1 a2:

127.0.0.1:6379> del a1 a2
(integer) 2

expire 键 时间 :设置键值的过期时间
1:设置 a3的过期时间是3s

127.0.0.1:6379> expire a3 3
(integer) 1
127.0.0.1:6379> keys *
1) "name"

ttl 键:

设置bb的过期时间是10s,然后使用ttl查看设置后还有几秒。

127.0.0.1:6379> setex bb 10 bb
OK
127.0.0.1:6379> ttl bb
(integer) 4
127.0.0.1:6379> ttl bb
(integer) 3
127.0.0.1:6379> ttl bb
(integer) 1
127.0.0.1:6379> ttl bb
(integer) -2
127.0.0.1:6379> get bb
(nil)

四:hash类型:注意hash值的类型只能是string

设置单个属性:hset 值 属性 值
1:设置键user的属性name 为itheima

127.0.0.1:6379> hset user name itheima
(integer) 1

2:设置键u2的属性name为itcast 属性age为11

127.0.0.1:6379> hmset u2 name itcast age 11
OK
127.0.0.1:6379> keys *
1) "name"
2) "u2"
3) "user"

获取指定键所有的属性:
1:获取u2的所有属性:

127.0.0.1:6379> hkeys u2
1) "name"
2) "age"

2:获取一个属性的值

127.0.0.1:6379> hget u2 name
"itcast"

3:获取多个属性的值:
获取键u2属性’name’,'age’的值

127.0.0.1:6379> hmget u2 name age
1) "itcast"
2) "11"

4:获取所有属性的值:
获取u2的所有属性的值:

127.0.0.1:6379> hvals u2
1) "itcast"
2) "11"

5:删除整个hash键和值使用del命令:
删除属性,属性的值也会一起被删除。
案例:删除u2的属性age:

127.0.0.1:6379> hdel u2 age
(integer) 1
127.0.0.1:6379> hkeys u2
1) "name"

五:列表:列表的元素类型也是string
例1:从键为a1的列表左侧加⼊数据a 、 b 、c

127.0.0.1:6379> lpush a1 a b c
(integer) 3
127.0.0.1:6379> lrange a1 0 3
1) "c"
2) "b"
3) "a"

例2:从键为a1的列表右侧加⼊数据0、1

127.0.0.1:6379> lrange a1 0 5
1) "c"
2) "b"
3) "a"
4) "0"
5) "1"

例3:在键为a1的列表中元素b前加⼊3

127.0.0.1:6379> linsert a1 before b 3
(integer) 6
127.0.0.1:6379> lrange a1 0 6
1) "c"
2) "3"
3) "b"
4) "a"
5) "0"
6) "1"

start、stop为元素的下标索引
索引从左侧开始,第⼀个元素为0
索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
例4:获取键为a1的列表所有元素
127.0.0.1:6379> lrange a1 0 -1

  1. “c”
  2. “3”
  3. “b”
  4. “a”
  5. “0”
  6. “1”
    例5:修改键为a1的列表中下标为1的元素值为z
127.0.0.1:6379> lrange a1 0 -1
1) "c"
2) "3"
3) "b"
4) "a"
5) "0"
6) "1"
127.0.0.1:6379> lset a1 1 z
OK
127.0.0.1:6379> lrange a1 0 -1
1) "c"
2) "z"
3) "b"
4) "a"
5) "0"
6) "1"

将列表中前count次出现的值为value的元素移除
count > 0: 从头往尾移除
count < 0: 从尾往头移除
count = 0: 移除所有
例6.1:向列表a2中加⼊元素a、b、a、b、a、b
例6.2:从a2列表右侧开始删除2个b
例6.3:查看列表a2的所有元素

127.0.0.1:6379> lpush a2 a b a b a b
(integer) 6
127.0.0.1:6379> lrem a2 -2 b
(integer) 2
127.0.0.1:6379> lrange a2 0 -1
1) "b"
2) "a"
3) "a"
4) "a"

修剪(截取) 在[start stop]区间内的元素,区间外的元素全部删除

127.0.0.1:6379> lrange a2 0 -1
1) "b"
2) "a"
3) "a"
4) "a"
127.0.0.1:6379> ltrim a2 2 3
OK
127.0.0.1:6379> lrange a2 0 -1
1) "a"
2) "a"

六:set类型:
⽆序集合
元素为string类型
元素具有唯⼀性,不重复
说明:对于集合没有修改操作
例1:向键a3的集合中添加元素zhangsan、lisi、wangwu
例2:获取键a3的集合中所有元素
例3:删除键a3的集合中元素wangwu

127.0.0.1:6379> sadd a3 zhangsan lisi wangwu
(integer) 3
127.0.0.1:6379> smembers a3
1) "zhangsan"
2) "lisi"
3) "wangwu"
127.0.0.1:6379> srem a3 wangwu
(integer) 1
127.0.0.1:6379> smembers a3
1) "zhangsan"
2) "lisi"

七:zset类型:
sorted set,有序集合
元素为string类型
元素具有唯⼀性,不重复
每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
说明:没有修改操作
例1:向键a4的集合中添加元素lisi、wangwu、zhaoliu、zhangsan,权重分别为4、5、6、3

127.0.0.1:6379> zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan
(integer) 4

返回指定范围内的元素
start、stop为元素的下标索引
索引从左侧开始,第⼀个元素为0
索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
例2:获取键a4的集合中所有元素

127.0.0.1:6379> zrange a4 0 -1
1) "zhangsan"
2) "lisi"
3) "wangwu"
4) "zhaoliu"

例3:获取键a4的集合中权限值在5和6之间的成员

127.0.0.1:6379> zrangebyscore a4 5 6
1) "wangwu"
2) "zhaoliu

例4:获取键a4的集合中元素zhangsan的权重

127.0.0.1:6379> zscore a4 zhangsan
"3"

例5:删除集合a4中元素zhangsan

127.0.0.1:6379> zrem a4 zhangsan
(integer) 1
127.0.0.1:6379> zrange a4 0 -1
1) "lisi"
2) "wangwu"
3) "zhaoliu"

例6:删除集合a4中权限在5、6之间的元素

127.0.0.1:6379> zremrangebyscore a4 5 6
(integer) 2
127.0.0.1:6379> zrange a4 0 -1
1) "lisi"