Redis笔记

启动 Redis 客户端:

$ redis-cli

设置字符串:

set key value

SET 命令的第一个参数是键(Key),第二个参数是值(Value

删除字符串:

del key value

获取字符串:

det key value

Redis中的列表

  • LPUSH 命令可用于将元素推入列表的左侧
  • RPUSH 命令可将元素推入列表的右侧
  • LPOP 和 RPOP 就分别从列表的左侧和右侧弹出元素
  • LINDEX 可以获取指定位置上的元素
  • LRANGE 可以获取指定范围的全部元素
  • redis 127.0.0.1:6379> rpush testlist item
  • (integer) 1
  • redis 127.0.0.1:6379> rpush testlist item2
  • (integer) 2
  • redis 127.0.0.1:6379> rpush testlist item
  • (integer) 3
  • redis 127.0.0.1:6379> lrange testlist 0 -1
  • 1) "item"
  • 2) "item2"
  • 3) "item"
  • redis 127.0.0.1:6379> lindex testlist 1
  • "item2"
  • redis 127.0.0.1:6379> lpop testlist
  • "item"
  • redis 127.0.0.1:6379> lrange testlist 0 -1
  • 1) "item2"
  • 2) "item"

Redis中的集合

由于集合是无序的,所以我们只能通过统一的 SADD 命令将元素添加到集合中,SREM 命令将元素从集合中移除。你还可以通过:

  • SMEMBERS 命令获取到集合中的所有元素
  • SISMEMBER 命令来判断一个元素是否已存在在集合中

  1. redis 127.0.0.1:6379> sadd testset item
  2. (integer) 1
  3. redis 127.0.0.1:6379> sadd testset item2
  4. (integer) 1
  5. redis 127.0.0.1:6379> sadd testset item
  6. (integer) 0
  7. redis 127.0.0.1:6379> smembers testset
  8. 1) "item"
  9. 2) "item2"
  10. redis 127.0.0.1:6379> sismember testset item3
  11. (integer) 0
  12. redis 127.0.0.1:6379> sismember testset item
  13. (integer) 1
  14. redis 127.0.0.1:6379> srem testset item2
  15. (integer) 1
  16. redis 127.0.0.1:6379> srem testset item2
  17. (integer) 0
  18. redis 127.0.0.1:6379>  smembers testset
  19. 1) "item"

上面示例的集合中包含的元素少,所以执行 SMEMBERS 命令没有问题,一旦集合中包含的元素非常多时,SMEMBERS 命令的执行速度会很慢,所以要谨慎的使用这个命令。

Redis中的哈希

  • hset 用于插入元素
    • 第一个参数为该哈希的键名,如果该哈希不存在,则创建一个
    • 第二个参数为哈希中的域名

如果不存在,则创建该域,并与第三个参数的值进行映射

  • 如果存在,则使用第三个参数更新该域的值
    • 第三个参数为哈希中的值
  • hgetall 会获取到该哈希的所有域-值对
  • hget 用于获取哈希中的某一个域
  • hdel 用户删除哈希中的某一个域
  • redis 127.0.0.1:6379> hset testhash key1 value1
  • (integer) 1
  • redis 127.0.0.1:6379> hset testhash key2 value2
  • (integer) 1
  • redis 127.0.0.1:6379> hset testhash key1 newvalue
  • (integer) 0
  • redis 127.0.0.1:6379> hgetall testhash
  • 1) "key1"
  • 2) "newvalue"
  • 3) "key2"
  • 4) "value2"
  • redis 127.0.0.1:6379> hdel testhash key2
  • (integer) 1
  • redis 127.0.0.1:6379> hget testhash key1
  • "newvalue"
  • redis 127.0.0.1:6379> hgetall testhash
  • 1) "key1"
  • 2) "newvalue"

Redis中的有序集合

有序集合和哈希一样,也是存储键值对。

只是有序集合的键被称为成员(member),每个成员都是唯一的,有序集合的值则被称为分值(score),这个分值必须为浮点数。所以有序集合既可以通过成员访问元素,也可以通过分值来排序元素。

  • ZADD 命令将带有指定分值的成员添加到有序集合中
  • ZRANGE 命令根据分值有序排列后的集合获取到指定范围的元素
  • ZRANGEBYSCORE 命令获取指定分值范围内的元素
  • ZREM 命令从有序集合中删除指定成员
  • redis 127.0.0.1:6379> zadd testzset 100 member1
  • (integer) 1
  • redis 127.0.0.1:6379> zadd testzset 200 member0
  • (integer) 1
  • redis 127.0.0.1:6379> zrange testzset 0 -1 withscores
  • 1) "member1"
  • 2) "100"
  • 3) "member0"
  • 4) "200"
  • redis 127.0.0.1:6379> zrangebyscore testzset 0 150 withscores
  • 1) "member1"
  • 2) "100"
  • redis 127.0.0.1:6379> zrem testzset member1
  • (integer) 1
  • redis 127.0.0.1:6379> zrange testzset 0 -1 withscores
  • 1) "member0"
  • 2) "200"

使用 Python 连接 Redis

  1. # 导入 redis 模块
  2. import redis
  3. # 创建连接池
  4. pool = redis.ConnectionPool(host='127.0.0.1', port=6379, decode_responses=True)
  5. # 创建客户端并连接到 Redis
  6. r = redis.Redis(connection_pool=pool)
  7. # 使用 SET 命令设置一个字符串键
  8. r.set("test", "hello")
  9. # 显示字符串键 test 的值
  10. print(r.get("test"))

Python操作Redis:

import redis

conn = redis.Redis()

import time

time.time()     获得时间戳

conn.hset("哈希表","键","值") #无就创建,有就修改

conn.hget("哈希表","键")  #获取值

conn.hkeys("hash1")    #获取hash中所有的key

conn.hmset("hash2", {"k2": "v2", "k3": "v3"})     批量增加

conn.incr("键")             将 key 中储存的数字值增一

conn.hincrby("哈希表", "键", 1)          将键值加1

conn.hgetall("testhash")             hgetall:返回哈希表中所有的域-值对

pipeline:将多条命令按照先后顺序放进一个队列中,一般配合execute一同使用,原子性(atomic)地执行队列里的命令。

  1. conn = redis.Redis()
  2. pipe = conn.pipeline(True) # 事务开始
  3. pipe.incr("counter")
  4. pipe.incr("counter")
  5. pipe.incr("counter")
  6. pipe.execute() # 事务执行

Set集合就是不允许重复的列表,本身是无序的。

有序集合,在集合的基础上,为每元素排序;元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值,即:值和分数,分数专门用来做排序。

conn.zscore("testzset", "member1")   返回有序集合中指定成员的分值。

conn.zadd("testzset", "member2", 3) 将成员加入到有序集合中,并确保其在正确的位置上。

conn.zrem("testzset", "member1")     从有序集合中移除指定成员

conn.zrange("testzset", 0, 1) zrange:返回有序集合中指定区间内的成员

conn.zrevrange("testzset", 0, -1)        zrevrange:按分值递减的顺序返回有序集合中指定区间内的成员

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值