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> ...
随机推荐
- ios 汽车品牌展示案例
汽车组模型 // ZQRGroup.h #import <Foundation/Foundation.h> @interface ZQRGroup : NSObject /** *组标题 ...
- ChinaCock界面控件介绍-CCButton
即将发布的ChinaCock新版本,将带来一个CCButton控件,实现可视按钮.Delphi原生的Button,在上面滑动后,当释放手指时会误触发OnClick事件,这不是我们想要的结果,CCBut ...
- Java学习笔记32(IO:序列化流)
对象中的数据 ,以流的形式,写入到文件中保存,过程称为写出对象,对象的序列化 ObjectOutputStream将对象写到序列中,实现序列化 在文件中,以流 的形式,将对象读取出来,过程称为读取对象 ...
- ipv6地址管理
为了彻底解决IPv4存在的问题,国际互联网工程任务组从1995年开始,着手研究开发下一代IP协议,即IPv6.可彻底解决IPv4地址不足的问题,除此之外,IPv6还采用分级地址模式.高效IP包头.主机 ...
- DOM中offsetLeft与style.left的区别
offsetLeft 获取的是相对于父对象的左边距 left 获取或设置相对于 具有定位属性(position定义为relative)的父对象 的左边距 如果父div的position定义为relat ...
- 【Python】爬虫-1
#练习1:获取搜狐网页上所有的URL并且把与篮球有关的内容筛选出来 #算法: #.获取搜狐网站所有内容 #.判断哪些是链接,获取URL格式有效的链接 #.获取每个有效URL网页的内容 #.判断内容是否 ...
- 【转】Skynet之消息队列 - 消息的存储与分发
Skynet之消息队列 - 消息的存储与分发 http://www.outsky.org/code/skynet-message-queue.html Sep 8, 2014 按我的理解,消息队列是S ...
- JavaScript数据类型-2---Undefined、 Null、 Boolean、 Number、 String.
学习目标 1.掌握JavaScript的数据类型 2.掌握typeof操作符 3.掌握Undefined 4.掌握null JavaScript的数据类型 ECMAScript中有5种简单数据类型(也 ...
- e与复利
e≍2.718 计算一个复利例子,设本金p,年利率为r,每月计算一次利息,月利息为r/12,则一年的本息一共: p(1+r/12)12=pq 当计算复利的时间间隔越来越小,根据上面极限公式,本金所乘的 ...
- Linux 下 SVN服务器搭建
使用Linux(CentOS)搭建SVN服务器全攻略 虽然在windows上搭建SVN很简单,但是效能却不高,这当然是和linux相比了.然而在linux上搭建SVN却非常繁琐,所以今天这篇文章就来一 ...