redis(3)五大数据类型及API操作

本节内容有:
redis五大数据类型及操作
python操作redis的代码

1 string

  • redis命令不区分大小写,但是key区分的 redis中的数据都是字符串。
  • redis是单线程,(不适合存储比较大的数据)
  • 使用incr 命令,如果key 不存在,会自动创建key 并自动+1.
  • redis中所有的数据都是字符串。
set key value 设置值 	 
get key 获取值 	
incr key 加一 	
decr key 减一

在这里插入图片描述
2 hash

  • 相当于一个key 对应一个map (map中又是key- value),
  • 应用于归类
hset  key field value 设置值 	
hget  key field      获取值 
hincrby key field num  设置增数量

在这里插入图片描述
3 list
List是有顺序可重复(数据结构中的:双链表,队列)

可作为链表 ,从左添加元素 也可以从右添加元素。

lpush list a b c d    (从左添加元素)

rpush list 1 2 3 4    (从右边添加元素)

lrange list 0 -1 (0-1 元素查看:也就表示查看所有)

lpop list (从左边取,删除)

rpop list  (从右边取,删除)

在这里插入图片描述
4 set
Set无顺序,不能重复

  • sadd set1 a b c d d (向set1中添加元素) 元素不重复

     smembers set1 (查询元素)
    
     srem set1 a (删除元素)
    

    在这里插入图片描述

5 zset
有顺序,不能重复

适合做排行榜 排序需要一个分数属性

zadd zset1 9 a 8 c 10 d 1 e   (添加元素 zadd key score member )
   
(ZRANGE key start stop [WITHSCORES])(查看所有元素:zrange key  0  -1 
withscores)

如果要查看分数,加上withscores.

zrange zset1 0 -1 (从小到大)

zrevrange zset1 0 -1 (从大到小)

zincrby zset2 score member (对元素member 增加 score)
127.0.0.1:6379> zadd zset1 8 a 4 b 5 c 1 d

(integer) 4

127.0.0.1:6379> zrange zset1 0 -1

1) "d"

2) "b"

3) "c"

4) "a"

127.0.0.1:6379> zadd zset1 9 a

(integer) 0

127.0.0.1:6379> zrange zset1 0 -1

1) "d"

2) "b"

3) "c"

4) "a"

127.0.0.1:6379> zrange zset1 0 -1 withscores

1) "d"

2) "1"

3) "b"

4) "4"

5) "c"

6) "5"

7) "a"

8) "9"

127.0.0.1:6379> zrevrange zset1 0 -1

1) "a"

2) "c"

3) "b"

4) "d"

127.0.0.1:6379> zincrby zset1 1 a

"10"

127.0.0.1:6379> zrevrange zset1 0 -1 withscores

1) "a"

2) "10"

3) "c"

4) "5"

5) "b"

6) "4"

7) "d"

8) "1"

下面是python操作redis的代码:

1.python连接redis(两种方式)

1  # decode_responses=True: 解决获取的值类型是bytes字节问题
2  r = redis.Redis(host='localhost', port='6379', db=0, decode_responses=True)
1  pool = redis.ConnectionPool(host='localhost', port=6379, db=0, decode_responses=True)
2  r = redis.Redis(connection_pool=pool)

2.字符串类型 String

1  # ex过期时间 单位秒S
2  r.set('name', 'Jack', ex=20)
3  rst = r.get('name')
4  print(rst)
5  
6  
7  结果: "Jack"

3.列表类型 list

 1  r.lpush('object', 'one')
 2  r.lpush('object', 'two')
 3  r.lpush('object', 'three')
 4  r.lpush('object', 'four')
 5  r.lpush('object', 'five')
 6  r.lpush('object', 'six')
 7  ret = r.lrange('object', 0, 5)
 8  print(ret[::-1], len(ret))
 9    
10   
11  结果: ['one', 'two', 'three', 'four', 'five', 'six']  6

4.哈希类型 hash

1  r.hset('user:info', 'name', 'Jack')
2  r.hset('user:info', 'age', 20)
3  r.hset('user:info', 'phone', '18712909999')
4  r.hset('user:info', 'email', '[email protected]')
5  rst = r.hgetall('user:info')
6  print(rst)
7 
8 
9  结果: {'age': '20', 'email': '[email protected]', 'name': 'Jack', 'phone': '18712909999'}

5.集合类型 set

1  r.sadd('set', 'one')
2  r.sadd('set', 'two')
3  r.sadd('set', 'three')
4  res = r.smembers('set')
5  print(res)
6 
7 
8  结果: {'two', 'one', 'three'}

6.有序集合类型 sorted set

 1  r.zadd('mark', 'one', 1)
 2  r.zadd('mark', 'two', 2)
 3  r.zadd('mark', 'three', 3)
 4  r.zadd('mark', 'four', 4)
 5  r.zadd('mark', 'five', 5)
 6  result = r.zrange('mark', 0, 10)
 7  print(result)
 8 
 9 
10  结果: ['one', 'two', 'three', 'four', 'five']
发布了48 篇原创文章 · 获赞 0 · 访问量 729

猜你喜欢

转载自blog.csdn.net/qq_36710311/article/details/104915927