Redis select选择数据库
Redis的功能真是强大,可以做数据库,可以做缓存。
今天发现Redis支持分隔操作空间,使得空间与空间之间互不影响。
SELECT index
切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
默认使用 0 号数据库。
可用版本:
>= 1.0.0
时间复杂度:
O(1)
返回值:
OK
redis> SET number 0 # 默认使用 0 号数据库
OK
redis> SELECT 1 # 使用 1 号数据库
OK
redis[1]> GET number # 已经切换到 1 号数据库,注意 Redis 现在的命令提示符多了个 [1]
(nil)
redis[1]> SET number 1
OK
redis[1]> GET number
"1"
redis[1]> SELECT 3 # 再切换到 3 号数据库
OK
redis[3]> # 提示符从 [1] 改变成了 [3]
select index操作可以选择数据库,如果不选择,则默认是db 0。每个连接建立后,如果不select,默认是对db 0操作。
Example1
以下代码,建立一个连接,进行select操作,选择db 3,然后关闭。接着再分别建立两个连接进行sadd操作。从输出结果可以看到,两次sadd的操作都是对db 0操作的。
package main
import (
"log"
"github.com/garyburd/redigo/redis"
)
const (
redisServer = "10.194.80.35:6379"
)
func main() {
selectDB(3)
batchSADD()
batchSADD2()
}
func selectDB(num int){
option := redis.DialPassword("123456")
c, err := redis.Dial("tcp", redisServer, option)
if err != nil {
log.Println("connect server failed:", err)
return
}
defer c.Close()
v, err := redis.String(c.Do("SELECT", num))
if err != nil {
log.Println("select failed:", err)
return
}
log.Println("select:",v)
}
func batchSADD(){
option := redis.DialPassword("123456")
c, err := redis.Dial("tcp", redisServer, option)
if err != nil {
log.Println("connect server failed:", err)
return
}
defer c.Close()
setKey := "myset"
args := []interface{}{setKey}
args = append(args, "10.1")
args = append(args, "10.2")
v, err := redis.Int64(c.Do("SADD", args...))
if err != nil {
log.Println("SADD failed:", err)
return
}
log.Println("sadd:",v)
}
func batchSADD2(){
option := redis.DialPassword("123456")
c, err := redis.Dial("tcp", redisServer, option)
if err != nil {
log.Println("connect server failed:", err)
return
}
defer c.Close()
setKey := "myset"
args := []interface{}{setKey}
args = append(args, "10.3")
args = append(args, "10.4")
v, err := redis.Int64(c.Do("SADD", args...))
if err != nil {
log.Println("SADD failed:", err)
return
}
log.Println("sadd:",v)
}
/*
select db 3
first sadd to db 0
second sadd to db 0
*/
output结果:
127.0.0.1:6379> SMEMBERS myset
- "10.1"
- "10.4"
- "10.2"
- "10.3"
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> SMEMBERS myset
(empty list or set)
127.0.0.1:6379[3]>
Example2
建立连接,select 3选择db 3,然后sadd,再建立一个连接,直接sadd。从结果可以看到,第一次sadd操作对db 3操作,第二次sadd对db 0操作的。
package main
import (
"log"
"github.com/garyburd/redigo/redis"
)
const (
redisServer = "10.194.80.35:6379"
)
func main() {
batchSADD()
batchSADD2()
}
func selectDB(num int){
option := redis.DialPassword("123456")
c, err := redis.Dial("tcp", redisServer, option)
if err != nil {
log.Println("connect server failed:", err)
return
}
defer c.Close()
v, err := redis.String(c.Do("SELECT", num))
if err != nil {
log.Println("select failed:", err)
return
}
log.Println("select:",v)
}
func batchSADD(){
option := redis.DialPassword("123456")
c, err := redis.Dial("tcp", redisServer, option)
if err != nil {
log.Println("connect server failed:", err)
return
}
defer c.Close()
ret, err := redis.String(c.Do("SELECT", 3))
if err != nil {
log.Println("select failed:", err)
return
}
log.Println("select:",ret)
setKey := "myset"
args := []interface{}{setKey}
args = append(args, "10.1")
args = append(args, "10.2")
v, err := redis.Int64(c.Do("SADD", args...))
if err != nil {
log.Println("SADD failed:", err)
return
}
log.Println("sadd:",v)
}
func batchSADD2(){
option := redis.DialPassword("123456")
c, err := redis.Dial("tcp", redisServer, option)
if err != nil {
log.Println("connect server failed:", err)
return
}
defer c.Close()
setKey := "myset"
args := []interface{}{setKey}
args = append(args, "10.5")
args = append(args, "10.6")
v, err := redis.Int64(c.Do("SADD", args...))
if err != nil {
log.Println("SADD failed:", err)
return
}
log.Println("sadd:",v)
}
/*
firt sadd to db 3
second sadd to db 0
*/
output结果:
127.0.0.1:6379> SMEMBERS myset
- "10.6"
- "10.1"
- "10.5"
- "10.4"
- "10.2"
- "10.3"
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> SMEMBERS myset - "10.1"
- "10.2"
127.0.0.1:6379[3]>
参考
http://redisdoc.com/connection/select.html
Redis select选择数据库的更多相关文章
- 12.Redis Select 命令 - 切换到指定的数据库
转自:http://www.runoob.com/redis/redis-tutorial.html Redis Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 ...
- 【原】thinkphp修改Redis操作类,支持选择数据库功能及添加其他方法
版本3.2.2(ThinkPHP\Library\Think\Cache\Driver\Redis.class.php), 一:官方默认不支持选择数据库功能及,现就可选择数据库功能进行说明. 1 co ...
- 用Redis作为Mysql数据库的缓存【转】
用Redis作Mysql数据库缓存,必须解决2个问题.首先,应该确定用何种数据结构存储来自Mysql的数据:在确定数据结构之后,还要考虑用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是 ...
- redis(二)--用Redis作MySQL数据库缓存
用Redis作MySQL数据库缓存,必须解决2个问题.首先,应该确定用何种数据结构存储来自mysql的数据:在确定数据结构之后,还要考虑用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是 ...
- Redis 多个数据库
注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存 ...
- Redis多个数据库
注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存 ...
- Redis 中的数据库
前面我们花了很多的时间介绍了 redis 中基本的数据结构,及其内部的实现情况,这些都是非常基础的东西,可能不经意间你就会用到他们,希望你花点时间了解一下. 接下来,我们将走近 redis 数据库,学 ...
- php版redis插件,SSDB数据库,增强型的Redis管理api实例
php版redis插件,SSDB数据库,增强型的Redis管理api实例 SSDB是一套基于LevelDB存储引擎的非关系型数据库(NOSQL),可用于取代Redis,更适合海量数据的存储.另外,ro ...
- 4.MySQL连接并选择数据库(SQL & C)
在连接了MySQL数据库之后,可以通过SQL命令或者C.PHP.JAVA等程序来指定需要操作的数据库.这里主要介绍SQL命令和相应的C程序. 首先创建用户rick(赋予所有权限) mysql> ...
随机推荐
- php优秀框架codeigniter学习系列——CI_URI类学习
这篇文章主要介绍CI核心框架工具类CI_URI. 该类主要用来解析uri和决定路由的.关于URI和URL的关系请参考这位朋友的文章.简单来说URI是唯一定位的资源,URL是唯一资源的一个网络可能访问路 ...
- svg相关
1.指定点缩放公式 translate(-centerX*(factor-1), -centerY*(factor-1)) scale(factor)
- HDU 6059 17多校3 Kanade's trio(字典树)
Problem Description Give you an array A[1..n],you need to calculate how many tuples (i,j,k) satisfy ...
- 微软Power BI 每月功能更新系列——4月Power BI 新功能学习
本月Power BI Desktop的更新,除了常规的视觉和数据连接器改进之外,还有两个非常大的功能改进,交互式的报表.问答,用户直接在Desktop可以询问有关的数据问题,面对层出不穷的用户需求,这 ...
- triplet改进,变种
1.一开始是FaceNet 2.一个重要的改进:image-based, Ding etal. 3.对于样本挑选的改进: 1)hard samples: hard positive 和hard neg ...
- 2017 乌鲁木齐赛区网络赛 J Our Journey of Dalian Ends 费用流
题目描述: Life is a journey, and the road we travel has twists and turns, which sometimes lead us to une ...
- apache php upload file
/********************************************************************************* * apache php uplo ...
- POJ 1200:Crazy Search(哈希)
Crazy Search Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 32483 Accepted: 8947 Des ...
- SQL-学习过程-001
1.了解什么是SQL和T-SQL 2.对数据库的对象的学习 数据库>>>数据表>>>字段>>>记录>>>视图>>&g ...
- 计算x
如果x的x次幂结果为10(参见[图1.png]),你能计算出x的近似值吗? 显然,这个值是介于2和3之间的一个数字. 请把x的值计算到小数后6位(四舍五入),并填写这个小数值. 注意:只填写一个小数, ...