目录
1.Redis介绍
2.Redis服务器与客户端
3.Redis配置文件
4.Redis数据类型操作
4.1使用python连接数据库
4.2 字符串
4.3 哈希
4.4 键对应操作
4.5 列表
4.6 集合
4.7 有序集合
1.Redis介绍
Redis 是一个开源的内存数据库,它提供了一个高性能的 key-value 存储系统,并支持多种数据结构(如字符串、哈希表、列表、集合等)。Redis 除了支持持久化外,还提供了复制、高可用和集群功能,使其成为一款非常流行的 NoSQL 数据库。
在实际应用中,Redis 被广泛用于缓存、会话存储、消息队列等场景,以提升系统性能和扩展性。由于其快速的读写速度和丰富的数据类型支持,Redis 在 Web 开发和大数据领域有着广泛的应用。
MySQL,MongoDB都是以文件的形式存储在磁盘上的;Redis数据在内存中,操作内存的速度远远高于磁盘,并且Redis数据最终也可以存储在磁盘上。Redis通过键值存储数据库,类似字典。
2.Redis服务器与客户端
1.启动服务器:
在黑窗口输入以下代码启动服务器,前提是电脑任务管理器中Redis服务是关闭的。
redis-server "D:\Program Files\Redis\redis.windows.conf"
2.客户端连接服务器
连接服务器,输入以下代码,-h后加主机IP,-a后加密码。默认无密码。
redis-cli -a 123456
3.Redis配置文件
1.获取配置信息
config get *
2.配置某个信息
这里我将用户密码设置为123456,因此上方客户端连接时需要输入密码
config get requirepass
config set requirepass 123456
3.常见配置项
- dbfilename, 数据文件
- requirepass ,用户密码
- masterauth,主机密码
- logfile, 日志文件
- port,端口号6379
- database,数据库,默认16个
- loglevel,日志等级
- bind,绑定IP
- 保存时间
- save time changecount
- save 900 1 ,修改一个15分钟以后保存
- save 60 10000,修改达到一万个 1分钟保存
4.Redis数据类型操作
Redis有以下五种数据类型
(1)字符串
(2)哈希
(3)列表
(4)集合
(5)有序集合
4.1使用python连接数据库
1.导入Redis模块
在终端输入以下语句
pip install redis
2.连接
import redis
client = redis.StrictRedis()
client.close()
4.2 字符串
在 Redis 中,字符串是最简单的数据结构之一,它可以存储最基本的数据类型,即一个键对应一个值。在 Redis 中,字符串不仅可以存储文本数据,还可以存储数字、二进制数据等。
常用操作如下:
(1)设置单个键值
r = client.set("s1", "hello world")
print(r)
(2)获取单个值
r = client.get("s1")
print(r)
(3)设置多个键值
r = client.mset({"s1": "v1", "s2": "v2"})
print(r)
(4)获取多个键值
r = client.mget("s1", "k1", "k2")
print(r)
(5)加增量1
r = client.set("s2", 100)
print(r)
r = client.incr("s2")
print(r)
(6)指定增量
r = client.incrby("s2", 10)
print(r)
(7)减1,减指定增量
r = client.decr("s2")
print(r)
r = client.decrby("s2", 5)
print(r)
(8)设置某个键值带有有效期。查看某个键的有效期
长期有效,有效期为-1
r = client.expire("s2", 50)
print(r)
r = client.ttl("s2")
print(r)
r = client.ttl("s1")
print(r)
(9)拼接,在原始数据后拼接
r = client.append("s1", "abcd")
print(r)
r = client.mget("s1")
print(r)
4.3 哈希
哈希存储键值对。
常用操作:
(1)hget(name, key)获取键对应的值
r = client.hget("h1", "k1")
print(r)
(2)hset(name, key, value)添加键值对
r = client.hset("h1", "k1", "v1")
print(r)
(3)hmset(name, {})添加多个键值对
r = client.hmset("h1", {"k2":"v2", "k3":"v3", "k4":"v4"})
print(r)
(4)hmget(name, [key])获取列表中字段对应的值
r = client.hmget("h1", ["k1", "k2", "k3"])
print(r)
(5)hincrby(name, key, value)字段的值 增加增量
r = client.hincrby("h1", "k5", 10)
print(r)
(6)hgetall(name) 所有字段与值
r = client.hgetall("h1")
print(r)
(7)hkeys(name) 所有的字段 hvals(name) 所有字段的值
r = client.hkeys("h1")
print(r)
r = client.hvals("h1")
print(r)
(8)hexists(name, key)判断字段是否存在
r = client.hexists("h1", "k1")
print(r)
r = client.hexists("h1", "k99")
print(r)
(9)hdel(name, key) 删除字段
r = client.hdel("h1", "k5")
print(r)
(10)hlen(neme, key) 返回字段长度
r = client.hlen("h1")
print(r)
4.4 键对应操作
(1)keys()返回所有键
(2)exists(k)查看键是否存在, 0为不存在 1为存在
r = client.exists("s1")
print(r)
(3)type(k)查看键对应值的类型
r = client.type("s1")
print(r)
(4)expire(k, time)设置有效期
r = client.expire("s3", 50)
print(r)
(5)ttl(k)查看剩余时间, -1为永久, -2为不存在的键
r = client.ttl("s8")
print(r)
(6)delete(k)删除键
r = client.delete("s8")
print(r)
4.5 列表
(1)lpush(k, v)开头插入
r = client.lpush("l1", 100)
print(r)
(2)rpush(k, v)末尾插入
r = client.rpush("l1", 50)
print(r)
(3)lpop(v) 开头删除
r = client.lpop("l1", 100)
print(r)
(4)rpop(v)末尾删除
r = client.rpop("l1", 50)
print(r)
(5)lset(k, index, v)修改指定位置额指定元素
r = client.lset("l1", 1, "50")
print(r)
(6)linsert(key, after\before, pivot, value)在指定位置插入指定元素
r = client.linsert("l1", "after", "120", "150")
print(r)
r = client.linsert("l1", "before", "50", "500")
print(r)
(7)lrem(key, count, value) 删除指定个数的指定元素
r = client.lrem("l1", 0, 1)
print(r)
(8)ltrim(key, start, stop)把原始位置切片
r = client.ltrim("l1", 0, 1)
print(r)
(9)lrange(key, start, end)返回对应位置范围所有元素
r = client.lrange("l1", 0, 1)
print(r)
(10)lindex(key, index) 返回对应位置的元素
r = client.lindex("l1", 0)
print(r)
4.6 集合
(1)sadd(key, *values)将多个数据插入集合
r = client.sadd("set2", 100, 500, 200, 300, 400, 100, 200)
print(r)
(2)srem(key, value)移除指定value
r = client.srem("set2", 100)
print(r)
(3)spop(key)随机移除
r = client.spop("set2")
print(r)
(4)srandmenber(key,count)随机取count个,不删除
r = client.srandmember("set2", 2)
print(r)
(5)scard(key)集合中元素个数
r = client.scard("set2")
print(r)
(6)smembers(key)返回所有元素
r = client.smembers("set2")
print(r)
(7)sismember(key, value)value是否在集合中
r = client.sismember("set2", "600")
print(r)
(8)sinter([key1,key2])返回交集
r = client.sinter(["set2", "set3"])
print(r)
(9)sinterstore(key3, [key1, key2])将返回的交集存储到集合
r = client.sinterstore("set4", ["set2", "set3"])
print(r)
(10)sunion([key1, key2]) 返回并集
r = client.sunion(["set2", "set3"])
print(r)
(11)sunionstore(key3, [key1, key2])将返回的并集存储到集合
r = client.sunionstore("set5", ["set2", "set3"])
print(r)
(12)sdiff([key1, key2])返回差集
r = client.sdiff(["set2", "set3"])
print(r)
(13)sdiffstore(key3, [key1, key2]) 将返回的差集存储到集合
r = client.sdiffstore("set6", ["set2", "set3"])
print(r)
4.7 有序集合
(1)zadd(name, {v, score}),添加带有权重的元素
r = client.zadd("zset2", {"v1": 10, "v2": 20, "v3": 30, "v4": 40, "v5": 50})
print(r)
(2)zrem(name, v, v),从有序集合中移除
r = client.zrem("zset2", "v1")
print(r)
(3)zcard(name),个数
r = client.zcard("zset2")
print(r)
(4)zcount(name, min, max),权重在min到max之间元素个数
r = client.zcount("zset2", 10, 30)
print(r)
(5)zrange(name, start, stop),获取指定索引范围元素
r = client.zrange("zset2", 0, 3, withscores=True)
print(r)
(6)zrevrange(name, start, stop),逆序获取指定索引范围元素,withscores=True显示分数
r = client.zrevrange("zset2", 0, 2, withscores=True)
print(r)
(7)zrangebyscore(name, min, max),获取制定分值对应元素
r = client.zrangebyscore("zset2", 10, 100, withscores=True)
print(r)
(8)zrevrangescore(name, max, min),逆序获取制定分值对应元素
r = client.zrevrangescore("zset2", "v5")
print(r)
(9)zscore(name, value),获取value对应的权重
r = client.zscore("zset2", "v5")
print(r)