Redis数据库

1.Redis是什么

REmote DIctionary Server(Redis) 是一个key-value存储系统。使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦
可持久化的日志型、Key-Value数据库,并提供多种语言的API(python, php, java…)。

它通常被称为数据结构服务器,因为值(value)
可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

dict = {‘name’:“fentiao”, “age”:100, “scores”: [100, 90, 100]}

2.Redis的优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,
    通过MULTI和EXEC指令包起来。
  • Redis支持数据的备份,即master-slave模式的数据备份。
  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

3.redis的安装

下载地址:http://redis.io/download
可以下载最新稳定版本。

tar xzf redis-5.0.3.tar.gz

启动:

make && make test  # 启动并测试

make完后redis-5.0.3目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

./redis-server   # 启动服务	

也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

./redis-server ../redis.conf

另一边

./redis-cli  # 应用redis

注意:

vim /etc/services   # 记录服务对应的端口号

常见的端口号:
    http: 80
    ssh: 22
    mysql: 3306
    redis: 6379

4.常用操作

字符串(String)

127.0.0.1:6379> set views 1000
127.0.0.1:6379> INCR views
(integer) 1001
127.0.0.1:6379> get views
"1001"
127.0.0.1:6379> INCR views
(integer) 1002

127.0.0.1:6379> DECR views
(integer) 1004
127.0.0.1:6379> DECR views
(integer) 1003

对于redis的常用操作

如何用python连接redis?

import time

import redis
   
# *******************************第一种方式***********************************
redis.Redis(host='localhost', port=6379)
conn = redis.Redis()

conn.set('name', 'fentiao', 3)  # 数据只保存3秒
print(conn.get('name'))

print("等待3秒........")
time.sleep(3)
print(conn.get('name'))

# ******************************第二种方式*********************
# 为了减少每次建立连接, 释放连接的开销, 推荐使用连接池。
# 多个redis对象可以共用一个连接池。

pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)
conn.set('name', 'fentiao', 3)   # 4代表的是失效时间, 单位为秒
# 默认返回bytes类型, 如果转换, 需要解码为utf-8编码格式
print(conn.get('name').decode('utf-8'))
print("等待3秒........")
time.sleep(3)
print(conn.get('name'))

部分常用操作

import redis

pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)

conn.set('name', 'fentiao', 3) 
conn.set('age', 10 , 3)
conn.set('scores', 100 , 3)
print(conn.get('name'))
print(conn['name'])

# 获取所有的key值
print(conn.keys())
print(len(conn.keys()))   # 获取字典长度

# 当前redis数据库中数据条数;
print(conn.dbsize())

# 删除指定key-value值
conn.delete('scores')
print("正在删除key......")
print(conn.get('scores'))

# 将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
conn.save()

print("清除前:", conn.keys())
# 清楚redis里面所有的key-value值
conn.flushall()

print("清除后:", conn.keys())

redis应用一——页面点击数

import redis

pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)

conn.set('views', 19800)
conn.incr('views')
print(conn.get('views'))

redis应用二——社交网站

社交网站, 每一个标签都会有自己的用户群, 通过圈子可以找到有共同特征的人(eg:python开发, 电影…), 当一个用户加入一个或者多个圈子后, 系统可以向这个用户推荐圈子中的人。

import redis

pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)

# 选择集合存储
# 因为集合不会重复
conn.sadd("python", 'user1')
conn.sadd("python", 'user2')
conn.sadd("python", 'user3')
conn.sadd("movie", 'user1')
conn.sadd("movie", 'user6')
conn.sadd("movie", 'user7')

# 获取某个圈子的成员
print(conn.smembers('python'))
print(conn.smembers('movie'))

# 获取两个圈子共同拥有的成员
print(conn.sinter('python', 'movie'))

# 获取并集
print(conn.sunion('python', 'movie'))
### Redis 数据库使用指南 Redis 是一个开源的内存键值存储数据库,具有高性能、丰富的数据结构支持以及分布式能力。它被广泛用于缓存系统、消息队列和高并发应用中。以下是 Redis 的基本概念、连接方法及 Java 操作示例。 #### 1. Redis 简介 Redis 是一种 NoSQL 数据库,支持多种数据结构,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。其设计目标是提供极高的读写性能,并支持持久化功能以防止数据丢失[^1]。 #### 2. 连接到 Redis 数据库 要使用 Redis 数据库,首先需要确保已正确安装并启动 Redis 服务。可以通过以下方式连接到 Redis: - **本地连接**:如果 Redis 在本地运行,默认端口为 6379,可以通过命令行工具 `redis-cli` 进行连接。 - **远程连接**:对于远程实例,需要指定主机地址和端口号,例如 `redis-cli -h <hostname> -p <port>`。 连接成功后,可以使用 Redis 提供的命令进行数据操作。例如,设置和获取键值对: ```bash SET mykey "Hello, Redis!" GET mykey ``` 此外,还可以通过编程语言提供的客户端库与 Redis 进行交互[^2]。 #### 3. 在 Java 中操作 Redis 在 Java 中操作 Redis 数据库通常需要借助 Redis 客户端库,如 Jedis 或 Spring Data Redis。以下是一个基于 Spring Data Redis 的配置示例: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfiguration { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 设置 Key 和 Value 的序列化器 redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new StringRedisSerializer()); return redisTemplate; } } ``` 通过上述配置,可以在 Java 应用程序中轻松地与 Redis 数据库交互[^3]。 #### 4. Redis 的持久化机制 Redis 支持两种主要的持久化方式: - **RDB(Redis Database Backup)**:定期将内存中的数据快照保存到磁盘上。 - **AOF(Append-Only File)**:记录每次写操作的日志,以便在重启时恢复数据。 开发者可以根据实际需求选择合适的持久化策略。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值